From 3cbc61cd1133c7a20e2d7554f2263f1b4a9795ff Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 20 Jul 2026 16:40:26 -0400 Subject: [PATCH] Hide remote mute option in participant context menu for 1:1 calls. --- .../securesms/components/webrtc/v2/CallScreen.kt | 7 ++++++- .../components/webrtc/v2/ComposeCallScreenMediator.kt | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt index 9a32bbf458..c4e2e89d3b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt @@ -134,6 +134,7 @@ fun CallScreen( onRemoteMuteToastDismissed: () -> Unit = {}, isSelfAdmin: Boolean = false, isCallLink: Boolean = false, + canRemoteMute: Boolean = false, onMuteAudio: (CallParticipant) -> Unit = {}, onRemoveFromCall: (CallParticipant) -> Unit = {}, onContactDetails: (CallParticipant) -> Unit = {}, @@ -383,6 +384,7 @@ fun CallScreen( participant = longPressedParticipant, isSelfAdmin = isSelfAdmin, isCallLink = isCallLink, + canRemoteMute = canRemoteMute, onDismiss = { longPressedParticipantId = null }, onMuteAudio = onMuteAudio, onRemoveFromCall = onRemoveFromCall, @@ -587,6 +589,7 @@ private fun ParticipantContextMenu( participant: CallParticipant?, isSelfAdmin: Boolean, isCallLink: Boolean, + canRemoteMute: Boolean, onDismiss: () -> Unit, onMuteAudio: (CallParticipant) -> Unit, onRemoveFromCall: (CallParticipant) -> Unit, @@ -620,7 +623,7 @@ private fun ParticipantContextMenu( .background(color = MaterialTheme.colorScheme.surfaceVariant) ) - if (resolved.isMicrophoneEnabled) { + if (canRemoteMute && resolved.isMicrophoneEnabled) { DropdownMenuItem( text = { Text(stringResource(R.string.CallParticipantSheet__mute_audio)) }, leadingIcon = { Icon(painter = painterResource(R.drawable.symbol_mic_slash_24), contentDescription = null) }, @@ -683,6 +686,7 @@ private fun ParticipantContextMenuAdminPreview() { ), isSelfAdmin = true, isCallLink = true, + canRemoteMute = true, onDismiss = {}, onMuteAudio = {}, onRemoveFromCall = {}, @@ -705,6 +709,7 @@ private fun ParticipantContextMenuNonAdminPreview() { ), isSelfAdmin = false, isCallLink = false, + canRemoteMute = true, onDismiss = {}, onMuteAudio = {}, onRemoveFromCall = {}, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/ComposeCallScreenMediator.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/ComposeCallScreenMediator.kt index a3054b79c7..1e2d047314 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/ComposeCallScreenMediator.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/ComposeCallScreenMediator.kt @@ -241,6 +241,7 @@ class ComposeCallScreenMediator(private val activity: WebRtcCallActivity, viewMo callParticipantUpdatePopupController = callParticipantUpdatePopupController, isSelfAdmin = controlAndInfoState.isSelfAdmin(), isCallLink = controlAndInfoState.callLink != null, + canRemoteMute = callParticipantsState.groupCallState.isNotIdle, onMuteAudio = callInfoCallbacks::onMuteAudio, onRemoveFromCall = callInfoCallbacks::onRemoveFromCall, onContactDetails = callInfoCallbacks::onContactDetails,