From 187cb407c90b36d38af05be94820d696893b9580 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 27 May 2026 19:26:28 +0000 Subject: [PATCH] fix(new-user): stop Import Follow List from reappearing after dismiss The route hint set by newKey() (Route.ImportFollowsSelectUser) was stored on AccountState.LoggedIn and never cleared. LoggedInPage re-assigned accountViewModel.firstRoute = route on every recomposition, so any Activity recreation (rotation, dark-mode toggle, returning from background) made the screen pop up again even after the user dismissed it via popBack. Consume the route once via remember(state) in AccountScreen, and gate the firstRoute assignment behind LaunchedEffect(Unit) so it only fires once per composition lifetime. --- .../com/vitorpamplona/amethyst/ui/screen/AccountScreen.kt | 7 ++++++- .../amethyst/ui/screen/loggedIn/LoggedInPage.kt | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountScreen.kt index dc5dad6f9e..a761b086c0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountScreen.kt @@ -30,6 +30,7 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -119,10 +120,14 @@ fun LoggedInSetup( state: AccountState.LoggedIn, accountSessionManager: AccountSessionManager, ) { + // Consume the one-shot route hint set by sign-in/account-switch so it + // can't re-fire when LoggedInPage re-composes after activity recreation + // (rotation, dark-mode toggle, returning from background). + val initialRoute = remember(state) { state.route.also { state.route = null } } SetAccountCentricViewModelStore(state) { LoggedInPage( account = state.account, - route = state.route, + route = initialRoute, accountSessionManager = accountSessionManager, ) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/LoggedInPage.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/LoggedInPage.kt index 3e1843906a..cab1210817 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/LoggedInPage.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/LoggedInPage.kt @@ -75,7 +75,9 @@ fun LoggedInPage( ), ) - accountViewModel.firstRoute = route + LaunchedEffect(Unit) { + accountViewModel.firstRoute = route + } // Adds this account to the authentication procedures for relays. RelayAuthSubscription(accountViewModel)