From 351362e9e1a5c62205a2cc632bb09db085db9d53 Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Fri, 2 Feb 2024 09:53:57 -0500 Subject: [PATCH] fix(nav): move AuthCheck inside Navigator root prevent a possible race condition where AuthCheck fires _before_ MainRoot is set as root Signed-off-by: Brandon McAnsh --- app/src/main/java/com/getcode/CodeApp.kt | 28 +++++++++---------- .../com/getcode/view/components/AuthCheck.kt | 4 +-- .../com/getcode/view/main/home/HomeScan.kt | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/getcode/CodeApp.kt b/app/src/main/java/com/getcode/CodeApp.kt index e5d809fa3..ce9299a41 100644 --- a/app/src/main/java/com/getcode/CodeApp.kt +++ b/app/src/main/java/com/getcode/CodeApp.kt @@ -88,23 +88,23 @@ fun CodeApp() { StackEvent.Replace -> CurrentScreen() } } - } - } - //Listen for authentication changes here - AuthCheck( - navigator = codeNavigator, - onNavigate = { screens -> - codeNavigator.replaceAll(screens, inSheet = false) - }, - onSwitchAccounts = { seed -> - activity?.let { - tlvm.logout(it) { - appState.navigator.replaceAll(LoginScreen(seed)) + //Listen for authentication changes here + AuthCheck( + navigator = codeNavigator, + onNavigate = { screens -> + codeNavigator.replaceAll(screens, inSheet = false) + }, + onSwitchAccounts = { seed -> + activity?.let { + tlvm.logout(it) { + appState.navigator.replaceAll(LoginScreen(seed)) + } + } } - } + ) } - ) + } } TopBarContainer(appState) diff --git a/app/src/main/java/com/getcode/view/components/AuthCheck.kt b/app/src/main/java/com/getcode/view/components/AuthCheck.kt index df285392a..de8b27b4d 100644 --- a/app/src/main/java/com/getcode/view/components/AuthCheck.kt +++ b/app/src/main/java/com/getcode/view/components/AuthCheck.kt @@ -91,9 +91,9 @@ fun AuthCheck( deeplinkHandler.intent .flatMapLatest { combine(flowOf(deeplinkHandler.handle(it)), SessionManager.authState) { a, b -> a to b } } .filter { (result, authState) -> - startupLog("checking auth state=${authState.isAuthenticated}") - // wait for authentication if (result == null) return@filter false + // wait for authentication + startupLog("checking auth state=${authState.isAuthenticated}") if( authState.isAuthenticated == null) { startupLog("awaiting auth state confirmation") return@filter false 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 885e05287..7ee5c7320 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 @@ -143,7 +143,7 @@ private fun HomeScan( val navigator = LocalCodeNavigator.current val scope = rememberCoroutineScope() - var isPaused by rememberSaveable { mutableStateOf(false) } + var isPaused by remember { mutableStateOf(false) } var kikCodeScannerView: KikCodeScannerView? by remember { mutableStateOf(null) }