From 34b395f9c52afcaf521bad139e0d5611f88aa5b0 Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Thu, 8 Aug 2024 11:49:32 -0400 Subject: [PATCH] fix: make tip card dismissal more deterministic Signed-off-by: Brandon McAnsh --- .../java/com/getcode/navigation/screens/MainScreens.kt | 5 +++++ .../com/getcode/navigation/screens/ModalScreens.kt | 8 ++++++++ .../main/java/com/getcode/view/main/home/HomeScan.kt | 10 +--------- .../com/getcode/view/main/tip/ConnectAccountScreen.kt | 2 +- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/getcode/navigation/screens/MainScreens.kt b/app/src/main/java/com/getcode/navigation/screens/MainScreens.kt index 2d65674fa..680888dc4 100644 --- a/app/src/main/java/com/getcode/navigation/screens/MainScreens.kt +++ b/app/src/main/java/com/getcode/navigation/screens/MainScreens.kt @@ -31,6 +31,7 @@ sealed interface HomeResult { data class Request(val amount: KinAmount) : HomeResult data class ConfirmTip(val amount: KinAmount) : HomeResult data object ShowTipCard : HomeResult + data object CancelTipEntry: HomeResult } @Parcelize @@ -66,6 +67,10 @@ data class HomeScreen( is HomeResult.ShowTipCard -> { vm.presentShareableTipCard() } + + is HomeResult.CancelTipEntry -> { + vm.cancelTipEntry() + } } } } diff --git a/app/src/main/java/com/getcode/navigation/screens/ModalScreens.kt b/app/src/main/java/com/getcode/navigation/screens/ModalScreens.kt index ad4a11eb4..7546a41fd 100644 --- a/app/src/main/java/com/getcode/navigation/screens/ModalScreens.kt +++ b/app/src/main/java/com/getcode/navigation/screens/ModalScreens.kt @@ -1,6 +1,7 @@ package com.getcode.navigation.screens import android.webkit.JavascriptInterface +import androidx.activity.compose.BackHandler import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.imePadding @@ -436,6 +437,9 @@ data class EnterTipModal(val isInChat: Boolean = false) : MainGraph, ModalRoot { } else { navigator.progress > 0f } + }, + onCloseClicked = { + navigator.hideWithResult(HomeResult.CancelTipEntry) } ) { EnterTipScreen(getViewModel()) { result -> @@ -443,6 +447,10 @@ data class EnterTipModal(val isInChat: Boolean = false) : MainGraph, ModalRoot { } } } + + BackHandler { + navigator.hideWithResult(HomeResult.CancelTipEntry) + } } } diff --git a/app/src/main/java/com/getcode/view/main/home/HomeScan.kt b/app/src/main/java/com/getcode/view/main/home/HomeScan.kt index 5ca35885e..455cc3c9b 100644 --- a/app/src/main/java/com/getcode/view/main/home/HomeScan.kt +++ b/app/src/main/java/com/getcode/view/main/home/HomeScan.kt @@ -38,6 +38,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.unit.dp import androidx.lifecycle.Lifecycle +import cafe.adriel.voyager.core.stack.StackEvent import com.getcode.LocalBiometricsState import com.getcode.R import com.getcode.manager.TopBarManager @@ -127,15 +128,6 @@ fun HomeScreen( } .launchIn(this) } - - LaunchedEffect(navigator) { - // reset tip entry state when tip entry is manually dismissed - // without advancing next - snapshotFlow { navigator.progress } - .filter { it == 0f && navigator.lastModalItem is EnterTipModal } - .onEach { homeViewModel.cancelTipEntry() } - .launchIn(this) - } } } } diff --git a/app/src/main/java/com/getcode/view/main/tip/ConnectAccountScreen.kt b/app/src/main/java/com/getcode/view/main/tip/ConnectAccountScreen.kt index de11719c9..4d09eb4f1 100644 --- a/app/src/main/java/com/getcode/view/main/tip/ConnectAccountScreen.kt +++ b/app/src/main/java/com/getcode/view/main/tip/ConnectAccountScreen.kt @@ -145,7 +145,7 @@ private fun TweetPreview( modifier = Modifier.weight(1f), text = xMessage, color = Color.White, - style = CodeTheme.typography.textSmall + style = CodeTheme.typography.textSmall, ) } }