diff --git a/app/src/main/java/chat/revolt/api/settings/GlobalState.kt b/app/src/main/java/chat/revolt/api/settings/GlobalState.kt index 3f2b572b..d31991cf 100644 --- a/app/src/main/java/chat/revolt/api/settings/GlobalState.kt +++ b/app/src/main/java/chat/revolt/api/settings/GlobalState.kt @@ -12,4 +12,8 @@ object GlobalState { fun hydrateWithSettings(settings: SyncedSettings) { settings.android.theme?.let { this.theme = Theme.valueOf(it) } } + + fun reset() { + theme = getDefaultTheme() + } } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt index ebde09b2..d7a21bb4 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/HomeScreen.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModel import androidx.navigation.NavController import chat.revolt.R import chat.revolt.api.RevoltAPI +import chat.revolt.api.settings.GlobalState import chat.revolt.components.generic.PageHeader import chat.revolt.components.screens.home.LinkOnHome import chat.revolt.persistence.KVStorage @@ -26,6 +27,7 @@ class HomeScreenViewModel @Inject constructor( fun logout() { runBlocking { kvStorage.remove("sessionToken") + GlobalState.reset() RevoltAPI.logout() } } diff --git a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt index 13f286bc..f37200a6 100644 --- a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt @@ -38,6 +38,8 @@ import chat.revolt.api.RevoltAPI import chat.revolt.api.routes.account.EmailPasswordAssessment import chat.revolt.api.routes.account.negotiateAuthentication import chat.revolt.api.routes.onboard.needsOnboarding +import chat.revolt.api.settings.GlobalState +import chat.revolt.api.settings.SyncedSettings import chat.revolt.components.generic.AnyLink import chat.revolt.components.generic.FormTextField import chat.revolt.components.generic.Weblink @@ -70,6 +72,11 @@ class LoginViewModel @Inject constructor( val mfaResponse: EmailPasswordAssessment? get() = _mfaResponse + private suspend fun loadSettings() { + SyncedSettings.fetch() + GlobalState.hydrateWithSettings(SyncedSettings) + } + fun doLogin() { _error = null @@ -99,7 +106,8 @@ class LoginViewModel @Inject constructor( _navigateTo = "onboarding" return@launch } - + + loadSettings() RevoltAPI.loginAs(token) _navigateTo = "home" diff --git a/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt b/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt index 78be485b..154c7310 100644 --- a/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt @@ -36,6 +36,8 @@ import chat.revolt.api.routes.account.MfaResponseRecoveryCode import chat.revolt.api.routes.account.MfaResponseTotpCode import chat.revolt.api.routes.account.authenticateWithMfaRecoveryCode import chat.revolt.api.routes.account.authenticateWithMfaTotpCode +import chat.revolt.api.settings.GlobalState +import chat.revolt.api.settings.SyncedSettings import chat.revolt.components.generic.CollapsibleCard import chat.revolt.components.generic.FormTextField import chat.revolt.persistence.KVStorage @@ -71,6 +73,11 @@ class MfaScreenViewModel @Inject constructor( _recoveryCode = code } + private suspend fun loadSettings() { + SyncedSettings.fetch() + GlobalState.hydrateWithSettings(SyncedSettings) + } + fun tryAuthorizeTotp(mfaTicket: String) { _error = null viewModelScope.launch { @@ -84,6 +91,7 @@ class MfaScreenViewModel @Inject constructor( ) try { + loadSettings() RevoltAPI.loginAs(response.firstUserHints!!.token) kvStorage.set("sessionToken", response.firstUserHints.token) @@ -109,6 +117,7 @@ class MfaScreenViewModel @Inject constructor( ) try { + loadSettings() RevoltAPI.loginAs(response.firstUserHints!!.token) kvStorage.set("sessionToken", response.firstUserHints.token)