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)