From 029fae455947a78fddb7ee479d6f06433001d4a3 Mon Sep 17 00:00:00 2001 From: Grisha Kruglov Date: Mon, 30 Mar 2020 09:48:12 -0700 Subject: [PATCH] Part 4: Make sure 'sync is on' snackbar does not initialize account manager --- .../org/mozilla/fenix/home/HomeFragment.kt | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index abbe1059a..2eaeb1fb5 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -391,19 +391,25 @@ class HomeFragment : Fragment() { ) ) - requireComponents.backgroundServices.accountManager.register(currentMode, owner = this) - requireComponents.backgroundServices.accountManager.register(object : AccountObserver { - override fun onAuthenticated(account: OAuthAccount, authType: AuthType) { - if (authType != AuthType.Existing) { - view?.let { - FenixSnackbar.make(it, Snackbar.LENGTH_SHORT) - .setText(it.context.getString(R.string.onboarding_firefox_account_sync_is_on)) - .setAnchorView(toolbarLayout) - .show() + requireComponents.backgroundServices.accountManagerAvailableQueue.runIfReadyOrQueue { + // By the time this code runs, we may not be attached to a context. + if ((this@HomeFragment).context == null) { + return@runIfReadyOrQueue + } + requireComponents.backgroundServices.accountManager.register(currentMode, owner = this@HomeFragment) + requireComponents.backgroundServices.accountManager.register(object : AccountObserver { + override fun onAuthenticated(account: OAuthAccount, authType: AuthType) { + if (authType != AuthType.Existing) { + view?.let { + FenixSnackbar.make(it, Snackbar.LENGTH_SHORT) + .setText(it.context.getString(R.string.onboarding_firefox_account_sync_is_on)) + .setAnchorView(toolbarLayout) + .show() + } } } - } - }, owner = this) + }, owner = this@HomeFragment) + } if (context.settings().showPrivateModeContextualFeatureRecommender && browsingModeManager.mode.isPrivate