diff options
| author | 2023-02-08 23:11:49 +0000 | |
|---|---|---|
| committer | 2023-02-08 23:11:49 +0000 | |
| commit | fc2e8ed238040bdea816e63553b0ae007f6522f1 (patch) | |
| tree | d8708625a3c3fcf160315df1db5fc4b36df0adc9 | |
| parent | a237dfdb7bf714c9bc18bfcb5d7f2e90d37dcf0a (diff) | |
| parent | 210b958f161437798caab1a5becc9e24d06c79f9 (diff) | |
Merge "More eagerly collect isSimpleUserSwitcher." into tm-qpr-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt index e5ab47325229..ad1e5fe08619 100644 --- a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt @@ -47,12 +47,14 @@ import kotlinx.coroutines.asExecutor import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext @@ -120,9 +122,25 @@ constructor( featureFlags: FeatureFlags, ) : UserRepository { - private val _userSwitcherSettings = MutableStateFlow(runBlocking { getSettings() }) - override val userSwitcherSettings: Flow<UserSwitcherSettingsModel> = - _userSwitcherSettings.asStateFlow().filterNotNull() + private val _userSwitcherSettings: StateFlow<UserSwitcherSettingsModel> = + globalSettings + .observerFlow( + names = + arrayOf( + SETTING_SIMPLE_USER_SWITCHER, + Settings.Global.ADD_USERS_WHEN_LOCKED, + Settings.Global.USER_SWITCHER_ENABLED, + ), + userId = UserHandle.USER_SYSTEM, + ) + .onStart { emit(Unit) } // Forces an initial update. + .map { getSettings() } + .stateIn( + scope = applicationScope, + started = SharingStarted.Eagerly, + initialValue = runBlocking { getSettings() }, + ) + override val userSwitcherSettings: Flow<UserSwitcherSettingsModel> = _userSwitcherSettings private val _userInfos = MutableStateFlow<List<UserInfo>?>(null) override val userInfos: Flow<List<UserInfo>> = _userInfos.filterNotNull() @@ -154,7 +172,6 @@ constructor( init { observeSelectedUser() - observeUserSettings() if (featureFlags.isEnabled(FACE_AUTH_REFACTOR)) { observeUserSwitching() } @@ -237,23 +254,6 @@ constructor( .launchIn(applicationScope) } - private fun observeUserSettings() { - globalSettings - .observerFlow( - names = - arrayOf( - SETTING_SIMPLE_USER_SWITCHER, - Settings.Global.ADD_USERS_WHEN_LOCKED, - Settings.Global.USER_SWITCHER_ENABLED, - ), - userId = UserHandle.USER_SYSTEM, - ) - .onStart { emit(Unit) } // Forces an initial update. - .map { getSettings() } - .onEach { _userSwitcherSettings.value = it } - .launchIn(applicationScope) - } - private suspend fun getSettings(): UserSwitcherSettingsModel { return withContext(backgroundDispatcher) { val isSimpleUserSwitcher = |