From 9efe95d882f51ea5a2c138e1c9f57f1d89f46dcc Mon Sep 17 00:00:00 2001 From: yanni goyal Date: Wed, 23 Apr 2025 23:17:25 +0530 Subject: [PATCH 1/6] Update SettingsViewModel.kt Fix #633 --- .../feature/settings/SettingsViewModel.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt index 123c84d1c..c325eef16 100644 --- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt @@ -16,14 +16,22 @@ package com.google.samples.apps.nowinandroid.feature.settings +import android.app.UiModeManager +import android.content.Context +import android.os.Build +import android.os.Build.VERSION_CODES import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig +import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.DARK +import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.FOLLOW_SYSTEM +import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.LIGHT import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Loading import com.google.samples.apps.nowinandroid.feature.settings.SettingsUiState.Success import dagger.hilt.android.lifecycle.HiltViewModel +import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.SharingStarted.Companion.WhileSubscribed import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map @@ -35,6 +43,7 @@ import kotlin.time.Duration.Companion.seconds @HiltViewModel class SettingsViewModel @Inject constructor( private val userDataRepository: UserDataRepository, + @ApplicationContext private val context: Context ) : ViewModel() { val settingsUiState: StateFlow = userDataRepository.userData @@ -62,6 +71,17 @@ class SettingsViewModel @Inject constructor( fun updateDarkThemeConfig(darkThemeConfig: DarkThemeConfig) { viewModelScope.launch { userDataRepository.setDarkThemeConfig(darkThemeConfig) + if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { + val uiModeManager = + context.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager + val splashMode = when (darkThemeConfig) { + FOLLOW_SYSTEM -> UiModeManager.MODE_NIGHT_AUTO + LIGHT -> UiModeManager.MODE_NIGHT_NO + DARK -> UiModeManager.MODE_NIGHT_YES + } + uiModeManager.setApplicationNightMode(splashMode) + } + } } From 7d6c98ec2ea03f871f7c7ae44342fd3eaed66fbe Mon Sep 17 00:00:00 2001 From: yanni goyal Date: Wed, 23 Apr 2025 23:24:24 +0530 Subject: [PATCH 2/6] Update SettingsViewModel.kt Fixed --- .../apps/nowinandroid/feature/settings/SettingsViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt index c325eef16..7bc766f90 100644 --- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt @@ -71,7 +71,7 @@ class SettingsViewModel @Inject constructor( fun updateDarkThemeConfig(darkThemeConfig: DarkThemeConfig) { viewModelScope.launch { userDataRepository.setDarkThemeConfig(darkThemeConfig) - if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { + if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { val uiModeManager = context.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager val splashMode = when (darkThemeConfig) { From 0ae715a5a6d1242cb9c2f84a6c424dc8c24c82f5 Mon Sep 17 00:00:00 2001 From: yanni goyal Date: Wed, 23 Apr 2025 23:26:44 +0530 Subject: [PATCH 3/6] Update SettingsViewModel.kt --- .../apps/nowinandroid/feature/settings/SettingsViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt index 7bc766f90..c325eef16 100644 --- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt @@ -71,7 +71,7 @@ class SettingsViewModel @Inject constructor( fun updateDarkThemeConfig(darkThemeConfig: DarkThemeConfig) { viewModelScope.launch { userDataRepository.setDarkThemeConfig(darkThemeConfig) - if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { + if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { val uiModeManager = context.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager val splashMode = when (darkThemeConfig) { From 7c9c983afd049546f8f09262d10322cd2bf794c5 Mon Sep 17 00:00:00 2001 From: yanni goyal Date: Thu, 24 Apr 2025 11:38:45 +0530 Subject: [PATCH 4/6] Update SettingsViewModel.kt For Below api level 31 i have also fixed it --- .../feature/settings/SettingsViewModel.kt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt index c325eef16..526a2a1cd 100644 --- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt @@ -20,6 +20,7 @@ import android.app.UiModeManager import android.content.Context import android.os.Build import android.os.Build.VERSION_CODES +import androidx.appcompat.app.AppCompatDelegate import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository @@ -43,7 +44,7 @@ import kotlin.time.Duration.Companion.seconds @HiltViewModel class SettingsViewModel @Inject constructor( private val userDataRepository: UserDataRepository, - @ApplicationContext private val context: Context + @ApplicationContext private val context: Context, ) : ViewModel() { val settingsUiState: StateFlow = userDataRepository.userData @@ -71,17 +72,21 @@ class SettingsViewModel @Inject constructor( fun updateDarkThemeConfig(darkThemeConfig: DarkThemeConfig) { viewModelScope.launch { userDataRepository.setDarkThemeConfig(darkThemeConfig) + val splashMode = when (darkThemeConfig) { + FOLLOW_SYSTEM -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM + LIGHT -> AppCompatDelegate.MODE_NIGHT_NO + DARK -> AppCompatDelegate.MODE_NIGHT_YES + } + AppCompatDelegate.setDefaultNightMode(splashMode) if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { - val uiModeManager = - context.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager - val splashMode = when (darkThemeConfig) { + val uiModeMode = when (darkThemeConfig) { FOLLOW_SYSTEM -> UiModeManager.MODE_NIGHT_AUTO LIGHT -> UiModeManager.MODE_NIGHT_NO DARK -> UiModeManager.MODE_NIGHT_YES } - uiModeManager.setApplicationNightMode(splashMode) + (context.getSystemService(Context.UI_MODE_SERVICE) as? UiModeManager) + ?.setApplicationNightMode(uiModeMode) } - } } From 8bacb1c3aa5e975ca6ef292f84a3a50b3c7d44e1 Mon Sep 17 00:00:00 2001 From: yanni goyal Date: Fri, 11 Jul 2025 15:16:32 +0530 Subject: [PATCH 5/6] Update SettingsViewModel.kt updated for just commit --- .../apps/nowinandroid/feature/settings/SettingsViewModel.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt index 526a2a1cd..aab768d0c 100644 --- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt @@ -78,6 +78,7 @@ class SettingsViewModel @Inject constructor( DARK -> AppCompatDelegate.MODE_NIGHT_YES } AppCompatDelegate.setDefaultNightMode(splashMode) + if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { val uiModeMode = when (darkThemeConfig) { FOLLOW_SYSTEM -> UiModeManager.MODE_NIGHT_AUTO From bc1007d7c963ddb436de8cd6ee04de04b21be1c7 Mon Sep 17 00:00:00 2001 From: yanni goyal Date: Fri, 11 Jul 2025 15:53:42 +0530 Subject: [PATCH 6/6] indent --- .../apps/nowinandroid/feature/settings/SettingsViewModel.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt index aab768d0c..526a2a1cd 100644 --- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt @@ -78,7 +78,6 @@ class SettingsViewModel @Inject constructor( DARK -> AppCompatDelegate.MODE_NIGHT_YES } AppCompatDelegate.setDefaultNightMode(splashMode) - if (Build.VERSION.SDK_INT >= VERSION_CODES.S) { val uiModeMode = when (darkThemeConfig) { FOLLOW_SYSTEM -> UiModeManager.MODE_NIGHT_AUTO