@@ -8,6 +8,8 @@ import kotlinx.coroutines.flow.StateFlow
88import kotlinx.coroutines.flow.asStateFlow
99import kotlinx.coroutines.launch
1010import team.aliens.dms.android.core.jwt.JwtProvider
11+ import team.aliens.dms.android.core.theme.ThemeMode
12+ import team.aliens.dms.android.core.theme.datastore.ThemeDataStoreDataSource
1113import team.aliens.dms.android.onboarding.datastore.OnboardingDataStoreDataSource
1214import team.aliens.dms.android.shared.exception.util.runCatchingCancellable
1315import javax.inject.Inject
@@ -16,6 +18,7 @@ import javax.inject.Inject
1618class MainActivityViewModel @Inject constructor(
1719 private val jwtProvider : JwtProvider ,
1820 private val onboardingDataSource : OnboardingDataStoreDataSource ,
21+ private val themeDataStoreDataSource : ThemeDataStoreDataSource ,
1922) : ViewModel() {
2023 val autoSignInAvailable: StateFlow <Boolean > = jwtProvider.isCachedRefreshTokenAvailable
2124
@@ -28,12 +31,20 @@ class MainActivityViewModel @Inject constructor(
2831 private val _isStartupResolved = MutableStateFlow (false )
2932 val isStartupResolved: StateFlow <Boolean > = _isStartupResolved .asStateFlow()
3033
34+ private val _themeMode = MutableStateFlow (ThemeMode .SYSTEM )
35+ val themeMode: StateFlow <ThemeMode > = _themeMode .asStateFlow()
36+
3137 init {
3238 viewModelScope.launch {
3339 runCatchingCancellable { jwtProvider.resolveSession() }
3440 _isOnboardingCompleted .value = onboardingDataSource.getOnboardingCompleted()
3541 _isStartupResolved .value = true
3642 }
43+ viewModelScope.launch {
44+ themeDataStoreDataSource.getThemeModeFlow().collect { mode ->
45+ _themeMode .value = mode
46+ }
47+ }
3748 }
3849
3950 fun resolveSession () {
0 commit comments