Guard auto-lower hand behind labs.

This commit is contained in:
Greyson Parrelli
2026-03-19 16:54:51 -04:00
committed by Cody Henthorne
parent 9594599d60
commit e657a4adf3
7 changed files with 27 additions and 4 deletions

View File

@@ -11,4 +11,5 @@ sealed interface LabsSettingsEvents {
data class ToggleIncognito(val enabled: Boolean) : LabsSettingsEvents
data class ToggleGroupSuggestionsForMembers(val enabled: Boolean) : LabsSettingsEvents
data class ToggleBetterSearch(val enabled: Boolean) : LabsSettingsEvents
data class ToggleAutoLowerHand(val enabled: Boolean) : LabsSettingsEvents
}

View File

@@ -133,6 +133,15 @@ private fun LabsSettingsContent(
onCheckChanged = { onEvent(LabsSettingsEvents.ToggleBetterSearch(it)) }
)
}
item {
Rows.ToggleRow(
checked = state.autoLowerHand,
text = "Auto Lower Hand Suggestion",
label = "Show a prompt to lower your raised hand when you are speaking in a group call.",
onCheckChanged = { onEvent(LabsSettingsEvents.ToggleAutoLowerHand(it)) }
)
}
}
}
}

View File

@@ -13,5 +13,6 @@ data class LabsSettingsState(
val storyArchive: Boolean = false,
val incognito: Boolean = false,
val groupSuggestionsForMembers: Boolean = false,
val betterSearch: Boolean = false
val betterSearch: Boolean = false,
val autoLowerHand: Boolean = false
)

View File

@@ -37,6 +37,10 @@ class LabsSettingsViewModel : ViewModel() {
SignalStore.labs.betterSearch = event.enabled
_state.value = _state.value.copy(betterSearch = event.enabled)
}
is LabsSettingsEvents.ToggleAutoLowerHand -> {
SignalStore.labs.autoLowerHand = event.enabled
_state.value = _state.value.copy(autoLowerHand = event.enabled)
}
}
}
@@ -46,7 +50,8 @@ class LabsSettingsViewModel : ViewModel() {
storyArchive = SignalStore.labs.storyArchive,
incognito = SignalStore.labs.incognito,
groupSuggestionsForMembers = SignalStore.labs.groupSuggestionsForMembers,
betterSearch = SignalStore.labs.betterSearch
betterSearch = SignalStore.labs.betterSearch,
autoLowerHand = SignalStore.labs.autoLowerHand
)
}
}

View File

@@ -217,11 +217,11 @@ private fun getSnackbarText(state: RaiseHandState): String {
val shouldDisplayLowerYourHand = remember(state) {
val now = System.currentTimeMillis().milliseconds
val hasUnexpiredSelf = state.raisedHands.any { it.sender.isSelf && it.sender.isPrimary && it.getCollapseTimestamp() >= now }
val hasSelfRaisedHand = state.raisedHands.any { it.sender.isSelf && it.sender.isPrimary }
val expiration = state.speechEvent?.getCollapseTimestamp() ?: Duration.ZERO
val isUnexpired = expiration >= now
state.speechEvent?.speechEvent == GroupCall.SpeechEvent.LOWER_HAND_SUGGESTION && isUnexpired && hasUnexpiredSelf
state.speechEvent?.speechEvent == GroupCall.SpeechEvent.LOWER_HAND_SUGGESTION && isUnexpired && hasSelfRaisedHand
}
if (shouldDisplayLowerYourHand && state.isExpanded) {