From b40c7d0e06c29f5ae514e1a2b7d9ca3e86b0075b Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 5 Jun 2025 11:05:20 -0300 Subject: [PATCH] Add crossfade to action-mode toolbar. --- .../securesms/main/MainToolbar.kt | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt index fdbc934a4f..82fdeec038 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt @@ -126,11 +126,21 @@ interface MainToolbarCallback { } } -enum class MainToolbarMode { - ACTION_MODE, - FULL, - BASIC, - SEARCH +enum class MainToolbarMode(val crossFadeKey: CrossFadeKey) { + ACTION_MODE(CrossFadeKey.ACTION_MODE), + FULL(CrossFadeKey.FULL), + BASIC(CrossFadeKey.BASIC), + SEARCH(CrossFadeKey.FULL); + + /** + * Since FULL and SEARCH share the same cross-fade target, we use a shared + * cross-fade key between them. + */ + enum class CrossFadeKey { + ACTION_MODE, + FULL, + BASIC + } } data class MainToolbarState( @@ -164,19 +174,11 @@ fun MainToolbar( state: MainToolbarState, callback: MainToolbarCallback ) { - if (state.mode == MainToolbarMode.ACTION_MODE) { - ActionModeToolbar( - state = state, - callback = callback - ) - return - } - Crossfade( - targetState = state.mode != MainToolbarMode.BASIC + targetState = state.mode.crossFadeKey ) { targetState -> when (targetState) { - true -> Box { + MainToolbarMode.CrossFadeKey.FULL -> Box { var revealOffset by remember { mutableStateOf(Offset.Zero) } BoxWithConstraints { @@ -211,7 +213,8 @@ fun MainToolbar( } } - false -> ArchiveToolbar(state, callback) + MainToolbarMode.CrossFadeKey.BASIC -> ArchiveToolbar(state, callback) + MainToolbarMode.CrossFadeKey.ACTION_MODE -> ActionModeToolbar(state, callback) } } }