@@ -6,8 +6,11 @@ import dagger.hilt.android.lifecycle.HiltViewModel
66import kotlinx.coroutines.flow.MutableStateFlow
77import kotlinx.coroutines.flow.StateFlow
88import kotlinx.coroutines.flow.asStateFlow
9+ import kotlinx.coroutines.flow.first
910import kotlinx.coroutines.launch
1011import team.aliens.dms.android.core.jwt.JwtProvider
12+ import team.aliens.dms.android.core.theme.ThemeMode
13+ import team.aliens.dms.android.core.theme.datastore.ThemeDataStoreDataSource
1114import team.aliens.dms.android.onboarding.datastore.OnboardingDataStoreDataSource
1215import team.aliens.dms.android.shared.exception.util.runCatchingCancellable
1316import javax.inject.Inject
@@ -16,6 +19,7 @@ import javax.inject.Inject
1619class MainActivityViewModel @Inject constructor(
1720 private val jwtProvider : JwtProvider ,
1821 private val onboardingDataSource : OnboardingDataStoreDataSource ,
22+ private val themeDataStoreDataSource : ThemeDataStoreDataSource ,
1923) : ViewModel() {
2024 val autoSignInAvailable: StateFlow <Boolean > = jwtProvider.isCachedRefreshTokenAvailable
2125
@@ -28,12 +32,21 @@ class MainActivityViewModel @Inject constructor(
2832 private val _isStartupResolved = MutableStateFlow (false )
2933 val isStartupResolved: StateFlow <Boolean > = _isStartupResolved .asStateFlow()
3034
35+ private val _themeMode = MutableStateFlow (ThemeMode .SYSTEM )
36+ val themeMode: StateFlow <ThemeMode > = _themeMode .asStateFlow()
37+
3138 init {
3239 viewModelScope.launch {
3340 runCatchingCancellable { jwtProvider.resolveSession() }
3441 _isOnboardingCompleted .value = onboardingDataSource.getOnboardingCompleted()
42+ _themeMode .value = themeDataStoreDataSource.getThemeModeFlow().first()
3543 _isStartupResolved .value = true
3644 }
45+ viewModelScope.launch {
46+ themeDataStoreDataSource.getThemeModeFlow().collect { mode ->
47+ _themeMode .value = mode
48+ }
49+ }
3750 }
3851
3952 fun resolveSession () {
0 commit comments