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() {
|
fun toggleVideo() {
|
||||||
|
val session = webRtcSession ?: return
|
||||||
val enabled = !_isVideoEnabled.value
|
val enabled = !_isVideoEnabled.value
|
||||||
_isVideoEnabled.value = enabled
|
_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() {
|
fun cycleAudioRoute() {
|
||||||
|
|||||||
Reference in New Issue
Block a user