Skip to content

Commit

Permalink
move handling sending video feed to separate function
Browse files Browse the repository at this point in the history
  • Loading branch information
saleniuk committed Jun 24, 2024
1 parent 3948544 commit aed9b55
Showing 1 changed file with 28 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import com.wire.android.R
import com.wire.android.ui.LocalActivity
import com.wire.android.ui.calling.CallState
import com.wire.android.ui.calling.ConversationName
import com.wire.android.ui.calling.SharedCallingViewModel
import com.wire.android.ui.calling.controlbuttons.CameraButton
Expand Down Expand Up @@ -163,25 +164,36 @@ fun OngoingCallScreen(
hideDialog = permissionPermanentlyDeniedDialogState::dismiss
)

HandleSendingVideoFeed(
callState = sharedCallingViewModel.callState,
pauseSendingVideoFeed = ongoingCallViewModel::pauseSendingVideoFeed,
startSendingVideoFeed = ongoingCallViewModel::startSendingVideoFeed,
stopSendingVideoFeed = ongoingCallViewModel::stopSendingVideoFeed,
clearVideoPreview = sharedCallingViewModel::clearVideoPreview,
)
}

@Composable
private fun HandleSendingVideoFeed(
callState: CallState,
pauseSendingVideoFeed: () -> Unit,
startSendingVideoFeed: () -> Unit,
stopSendingVideoFeed: () -> Unit,
clearVideoPreview: () -> Unit,
) {
// Pause the video feed when the lifecycle is paused and resume it when the lifecycle is resumed.
val lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current
DisposableEffect(lifecycleOwner) {

val observer = LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_PAUSE &&
sharedCallingViewModel.callState.callStatus == CallStatus.ESTABLISHED &&
sharedCallingViewModel.callState.isCameraOn
) {
ongoingCallViewModel.pauseSendingVideoFeed()
if (event == Lifecycle.Event.ON_PAUSE && callState.callStatus == CallStatus.ESTABLISHED && callState.isCameraOn) {
pauseSendingVideoFeed()
}
if (event == Lifecycle.Event.ON_RESUME &&
sharedCallingViewModel.callState.callStatus == CallStatus.ESTABLISHED &&
sharedCallingViewModel.callState.isCameraOn
) {
ongoingCallViewModel.startSendingVideoFeed()
if (event == Lifecycle.Event.ON_RESUME && callState.callStatus == CallStatus.ESTABLISHED && callState.isCameraOn) {
startSendingVideoFeed()
}
if (event == Lifecycle.Event.ON_DESTROY) {
sharedCallingViewModel.clearVideoPreview()
clearVideoPreview()
}
}

Expand All @@ -193,11 +205,11 @@ fun OngoingCallScreen(
}

// Start/stop sending video feed based on the camera state when the call is established.
LaunchedEffect(sharedCallingViewModel.callState.callStatus, sharedCallingViewModel.callState.isCameraOn) {
if (sharedCallingViewModel.callState.callStatus == CallStatus.ESTABLISHED) {
when (sharedCallingViewModel.callState.isCameraOn) {
true -> ongoingCallViewModel.startSendingVideoFeed()
false -> ongoingCallViewModel.stopSendingVideoFeed()
LaunchedEffect(callState.callStatus, callState.isCameraOn) {
if (callState.callStatus == CallStatus.ESTABLISHED) {
when (callState.isCameraOn) {
true -> startSendingVideoFeed()
false -> stopSendingVideoFeed()
}
}
}
Expand Down

0 comments on commit aed9b55

Please sign in to comment.