diff --git a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt index 89ffd99ac..5f5354b12 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt @@ -83,6 +83,10 @@ object LocalPreferences { addAccount(npub) } + fun switchToAccount(npub: String) { + currentAccount = npub + } + /** * Removes the account from the app level shared preferences */ diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt index fb751c5d6..0f414299e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AccountSwitchBottomSheet.kt @@ -86,7 +86,7 @@ fun AccountSwitchBottomSheet( ) { Row( modifier = Modifier.clickable { - accountStateViewModel.login(acc.npub) + accountStateViewModel.switchUser(acc.npub) }, verticalAlignment = Alignment.CenterVertically ) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt index eff4f583d..10cc60808 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/AccountStateViewModel.kt @@ -55,6 +55,12 @@ class AccountStateViewModel() : ViewModel() { login(account) } + fun switchUser(npub: String) { + prepareLogoutOrSwitch() + LocalPreferences.switchToAccount(npub) + tryLoginExistingAccount() + } + fun newKey() { val account = Account(Persona()) LocalPreferences.updatePrefsForLogin(account) @@ -86,7 +92,7 @@ class AccountStateViewModel() : ViewModel() { } } - fun logOff(npub: String) { + private fun prepareLogoutOrSwitch() { val state = accountContent.value when (state) { @@ -104,7 +110,10 @@ class AccountStateViewModel() : ViewModel() { } _accountContent.update { AccountState.LoggedOff } + } + fun logOff(npub: String) { + prepareLogoutOrSwitch() LocalPreferences.updatePrefsForLogout(npub) tryLoginExistingAccount() }