From 7b7b6a32ee6ae9ad8fb5bb29c6bf749fe3548545 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 27 Oct 2025 11:32:14 -0300 Subject: [PATCH] Deselect active item when in full-screen pane. --- .../securesms/main/MainNavigationViewModel.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt index 5de9e45c08..b19a7d333e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt @@ -19,6 +19,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -49,11 +50,18 @@ class MainNavigationViewModel( private val internalDetailLocation = MutableSharedFlow() val detailLocation: SharedFlow = internalDetailLocation + private val internalIsFullScreenPane = MutableStateFlow(false) + val isFullScreenPane: StateFlow = internalIsFullScreenPane + private val internalActiveChatThreadId = MutableStateFlow(-1L) - val observableActiveChatThreadId: Observable = internalActiveChatThreadId.asObservable() + val observableActiveChatThreadId: Observable = internalActiveChatThreadId.combine(isFullScreenPane) { id, expanded -> + if (expanded) -1L else id + }.asObservable() private val internalActiveCallId = MutableStateFlow(null) - val observableActiveCallId: Observable> = internalActiveCallId.map { Optional.ofNullable(it) }.asObservable() + val observableActiveCallId: Observable> = internalActiveCallId.map { Optional.ofNullable(it) }.combine(isFullScreenPane) { id, expanded -> + if (expanded) Optional.ofNullable(null) else id + }.asObservable() private val internalMegaphone = MutableStateFlow(Megaphone.NONE) val megaphone: StateFlow = internalMegaphone @@ -69,9 +77,6 @@ class MainNavigationViewModel( private val internalMainNavigationState = MutableStateFlow(MainNavigationState(currentListLocation = initialListLocation)) val mainNavigationState: StateFlow = internalMainNavigationState - private val internalIsFullScreenPane = MutableStateFlow(false) - val isFullScreenPane: StateFlow = internalIsFullScreenPane - /** * This is Rx because these are still accessed from Java. */