From d33315b49f6a43a7cace9c5564403f365c928bd7 Mon Sep 17 00:00:00 2001 From: Infi Date: Sat, 20 May 2023 17:38:28 +0200 Subject: [PATCH] refactor: global state and hydration Signed-off-by: Infi --- .../main/java/chat/revolt/api/settings/GlobalState.kt | 10 +++++----- app/src/main/java/chat/revolt/screens/SplashScreen.kt | 3 +-- .../screens/settings/AppearanceSettingsScreen.kt | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) 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 bcc593de..3f2b572b 100644 --- a/app/src/main/java/chat/revolt/api/settings/GlobalState.kt +++ b/app/src/main/java/chat/revolt/api/settings/GlobalState.kt @@ -1,15 +1,15 @@ package chat.revolt.api.settings +import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import chat.revolt.ui.theme.Theme import chat.revolt.ui.theme.getDefaultTheme object GlobalState { - private var _theme = mutableStateOf(getDefaultTheme()) - val theme - get() = _theme.value + var theme by mutableStateOf(getDefaultTheme()) - fun setTheme(theme: Theme) { - _theme.value = theme + fun hydrateWithSettings(settings: SyncedSettings) { + settings.android.theme?.let { this.theme = Theme.valueOf(it) } } } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/screens/SplashScreen.kt b/app/src/main/java/chat/revolt/screens/SplashScreen.kt index 001e0a40..a557357c 100644 --- a/app/src/main/java/chat/revolt/screens/SplashScreen.kt +++ b/app/src/main/java/chat/revolt/screens/SplashScreen.kt @@ -34,7 +34,6 @@ import chat.revolt.api.settings.SyncedSettings import chat.revolt.components.screens.splash.DisconnectedScreen import chat.revolt.persistence.KVStorage import chat.revolt.ui.theme.RevoltColorScheme -import chat.revolt.ui.theme.Theme import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import io.ktor.client.request.get @@ -129,7 +128,7 @@ class SplashScreenViewModel @Inject constructor( private fun loadSettings() { viewModelScope.launch { SyncedSettings.fetch() - SyncedSettings.android.theme?.let { GlobalState.setTheme(Theme.valueOf(it)) } + GlobalState.hydrateWithSettings(SyncedSettings) } } diff --git a/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt b/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt index 79dcae56..8ef0a19a 100644 --- a/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt +++ b/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt @@ -49,7 +49,7 @@ fun AppearanceSettingsScreen( val context = LocalContext.current fun setNewTheme(theme: Theme) { - GlobalState.setTheme(theme) + GlobalState.theme = theme viewModel.saveNewTheme(theme) }