pull/1897/merge
yanni goyal 2 days ago committed by GitHub
commit af744a751f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -16,14 +16,23 @@
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.appcompat.app.AppCompatDelegate
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 +44,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<SettingsUiState> =
userDataRepository.userData
@ -62,6 +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 uiModeMode = when (darkThemeConfig) {
FOLLOW_SYSTEM -> UiModeManager.MODE_NIGHT_AUTO
LIGHT -> UiModeManager.MODE_NIGHT_NO
DARK -> UiModeManager.MODE_NIGHT_YES
}
(context.getSystemService(Context.UI_MODE_SERVICE) as? UiModeManager)
?.setApplicationNightMode(uiModeMode)
}
}
}

Loading…
Cancel
Save