fix: enable video toggle during voice calls
When a call starts as voice-only, no video track exists. Tapping the camera toggle was calling setVideoEnabled(true) on a null track, doing nothing. Now toggleVideo() checks if a video track exists. If not, it creates one on-demand (addVideoTrack + startCamera), upgrading the voice call to include video. If toggling off, it stops the camera to save battery. https://claude.ai/code/session_017hZm7yu7CzmcQgZGSaqSXS
This commit is contained in:
@@ -227,9 +227,20 @@ class CallController(
|
||||
}
|
||||
|
||||
fun toggleVideo() {
|
||||
val session = webRtcSession ?: return
|
||||
val enabled = !_isVideoEnabled.value
|
||||
_isVideoEnabled.value = enabled
|
||||
webRtcSession?.setVideoEnabled(enabled)
|
||||
|
||||
if (enabled && session.getLocalVideoTrack() == null) {
|
||||
// Video track doesn't exist yet (voice call upgraded to video)
|
||||
session.addVideoTrack()
|
||||
_localVideoTrack.value = session.getLocalVideoTrack()
|
||||
} else {
|
||||
session.setVideoEnabled(enabled)
|
||||
if (!enabled) {
|
||||
session.stopCamera()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun cycleAudioRoute() {
|
||||
|
||||
Reference in New Issue
Block a user