From 24b76f20011929882ab36702b5645134d00e9acf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 21 Nov 2025 15:42:15 +0100 Subject: [PATCH] Fix crash when clicking fast on back key on the Add account screen. --- .../kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt | 5 +++++ .../main/kotlin/io/element/android/appnav/RootFlowNode.kt | 4 ++++ .../io/element/android/features/login/api/LoginEntryPoint.kt | 1 + .../io/element/android/features/login/impl/LoginFlowNode.kt | 4 ++++ .../features/login/impl/screens/onboarding/OnBoardingNode.kt | 3 ++- 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt index 2544abbfb3..d888ac3b15 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt @@ -57,6 +57,7 @@ class NotLoggedInFlowNode( interface Callback : Plugin { fun navigateToBugReport() + fun onDone() } private val callback: Callback = callback() @@ -83,6 +84,10 @@ class NotLoggedInFlowNode( override fun navigateToBugReport() { callback.navigateToBugReport() } + + override fun onDone() { + callback.onDone() + } } loginEntryPoint.createNode( parentNode = this, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index a0d2f44640..1a23bce132 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -243,6 +243,10 @@ class RootFlowNode( override fun navigateToBugReport() { backstack.push(NavTarget.BugReport) } + + override fun onDone() { + backstack.pop() + } } val params = NotLoggedInFlowNode.Params( loginParams = navTarget.params, diff --git a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt index 5256bcb695..830a63b8f1 100644 --- a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt +++ b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt @@ -21,6 +21,7 @@ interface LoginEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun navigateToBugReport() + fun onDone() } fun createNode( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt index 4a7275e2da..a19bb12d86 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt @@ -167,6 +167,10 @@ class LoginFlowNode( override fun navigateToLoginPassword() { backstack.push(NavTarget.LoginPassword) } + + override fun onDone() { + callback.onDone() + } } val params = inputs() val inputs = OnBoardingNode.Params( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt index 7e0901470a..1ded677c13 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt @@ -42,6 +42,7 @@ class OnBoardingNode( fun navigateToLoginPassword() fun navigateToOidc(oidcDetails: OidcDetails) fun navigateToCreateAccount(url: String) + fun onDone() } data class Params( @@ -71,7 +72,7 @@ class OnBoardingNode( onNeedLoginPassword = callback::navigateToLoginPassword, onLearnMoreClick = { openLearnMorePage(context) }, onCreateAccountContinue = callback::navigateToCreateAccount, - onBackClick = ::navigateUp, + onBackClick = callback::onDone, ) } }