From d98eba1d6431e0d1fc0e484c1f8a8c9b1b64869e Mon Sep 17 00:00:00 2001 From: Grisha Kruglov Date: Fri, 25 Sep 2020 13:08:24 -0700 Subject: [PATCH] Closes #15432: Invoke UI updates on main thread in response to account events --- .../settings/logins/SyncLoginsPreferenceView.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/logins/SyncLoginsPreferenceView.kt b/app/src/main/java/org/mozilla/fenix/settings/logins/SyncLoginsPreferenceView.kt index 49e313b572..c8106882b9 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/logins/SyncLoginsPreferenceView.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/logins/SyncLoginsPreferenceView.kt @@ -7,6 +7,8 @@ package org.mozilla.fenix.settings.logins import androidx.lifecycle.LifecycleOwner import androidx.navigation.NavController import androidx.preference.Preference +import kotlinx.coroutines.MainScope +import kotlinx.coroutines.launch import mozilla.components.concept.sync.AccountObserver import mozilla.components.concept.sync.AuthType import mozilla.components.concept.sync.OAuthAccount @@ -28,10 +30,15 @@ class SyncLoginsPreferenceView( init { accountManager.register(object : AccountObserver { - override fun onAuthenticated(account: OAuthAccount, authType: AuthType) = - updateSyncPreferenceStatus() - override fun onLoggedOut() = updateSyncPreferenceNeedsLogin() - override fun onAuthenticationProblems() = updateSyncPreferenceNeedsReauth() + override fun onAuthenticated(account: OAuthAccount, authType: AuthType) { + MainScope().launch { updateSyncPreferenceStatus() } + } + override fun onLoggedOut() { + MainScope().launch { updateSyncPreferenceNeedsLogin() } + } + override fun onAuthenticationProblems() { + MainScope().launch { updateSyncPreferenceNeedsReauth() } + } }, owner = lifecycleOwner) val accountExists = accountManager.authenticatedAccount() != null