@@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.size
2222import  androidx.compose.material.Text 
2323import  androidx.compose.material3.MaterialTheme 
2424import  androidx.compose.runtime.Composable 
25+ import  androidx.compose.runtime.DisposableEffect 
2526import  androidx.compose.runtime.LaunchedEffect 
2627import  androidx.compose.runtime.getValue 
2728import  androidx.compose.ui.Alignment 
@@ -33,7 +34,9 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
3334import  io.getstream.video.android.compose.theme.VideoTheme 
3435import  io.getstream.video.android.compose.ui.components.call.activecall.CallContent 
3536import  io.getstream.video.android.compose.ui.components.call.controls.ControlActions 
37+ import  io.getstream.video.android.compose.ui.components.call.controls.actions.FlipCameraAction 
3638import  io.getstream.video.android.compose.ui.components.call.controls.actions.LeaveCallAction 
39+ import  io.getstream.video.android.compose.ui.components.call.controls.actions.ToggleCameraAction 
3740import  io.getstream.video.android.compose.ui.components.call.controls.actions.ToggleMicrophoneAction 
3841import  io.getstream.video.android.core.Call 
3942import  io.getstream.whatsappclone.designsystem.component.WhatsAppLoadingIndicator 
@@ -71,12 +74,15 @@ fun WhatsAppVideoCallContent(
7174  videoCall :  Boolean ,
7275  onBackPressed :  () ->  Unit 
7376) {
77+   val  isCameraEnabled by call.camera.isEnabled.collectAsStateWithLifecycle()
7478  val  isMicrophoneEnabled by call.microphone.isEnabled.collectAsStateWithLifecycle()
7579
76-   LaunchedEffect (key1 =  call.id) {
80+   DisposableEffect (key1 =  call.id) {
7781    if  (! videoCall) {
7882      call.camera.setEnabled(false )
7983    }
84+ 
85+     onDispose { call.leave() }
8086  }
8187
8288  VideoTheme  {
@@ -85,7 +91,37 @@ fun WhatsAppVideoCallContent(
8591      onBackPressed =  onBackPressed,
8692      controlsContent =  {
8793        if  (videoCall) {
88-           ControlActions (call =  call)
94+           ControlActions (
95+             call =  call,
96+             actions =  listOf (
97+               {
98+                 ToggleCameraAction (
99+                   modifier =  Modifier .size(52 .dp),
100+                   isCameraEnabled =  isCameraEnabled,
101+                   onCallAction =  { call.camera.setEnabled(it.isEnabled) }
102+                 )
103+               },
104+               {
105+                 ToggleMicrophoneAction (
106+                   modifier =  Modifier .size(52 .dp),
107+                   isMicrophoneEnabled =  isMicrophoneEnabled,
108+                   onCallAction =  { call.microphone.setEnabled(it.isEnabled) }
109+                 )
110+               },
111+               {
112+                 FlipCameraAction (
113+                   modifier =  Modifier .size(52 .dp),
114+                   onCallAction =  { call.camera.flip() }
115+                 )
116+               },
117+               {
118+                 LeaveCallAction (
119+                   modifier =  Modifier .size(52 .dp),
120+                   onCallAction =  { onBackPressed.invoke() }
121+                 )
122+               }
123+             )
124+           )
89125        } else  {
90126          ControlActions (
91127            call =  call,
0 commit comments