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:
Claude
2026-04-02 14:24:13 +00:00
parent 6e695f4801
commit 1f5b39a9e4
@@ -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() {