From ad1fd57b8fbbacdeac9694ab8980d5381e39c9e7 Mon Sep 17 00:00:00 2001 From: Roger Yang Date: Thu, 18 Aug 2022 15:27:33 -0400 Subject: [PATCH] Close #26072: Don't show sync menu item until account manager is available --- .../components/toolbar/DefaultToolbarMenu.kt | 33 ++++++++++++------- .../java/org/mozilla/fenix/home/HomeMenu.kt | 29 +++++++++++----- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt index d92be4c83e..012d19ce55 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt @@ -349,17 +349,28 @@ open class DefaultToolbarMenu( onItemTapped.invoke(ToolbarMenu.Item.Quit) } - private fun getSyncItemTitle() = - accountManager.accountProfileEmail ?: context.getString(R.string.sync_menu_sign_in) + private fun syncMenuItem(): BrowserMenuImageText? { + val syncItemTitle = + if (context.components.backgroundServices.accountManagerAvailableQueue.isReady()) { + accountManager.accountProfileEmail ?: context.getString(R.string.sync_menu_sign_in) + } else { + null + } - private val syncMenuItem = BrowserMenuImageText( - getSyncItemTitle(), - R.drawable.ic_signed_out, - primaryTextColor() - ) { - onItemTapped.invoke( - ToolbarMenu.Item.SyncAccount(accountManager.accountState) - ) + return when (syncItemTitle) { + null -> null + else -> { + BrowserMenuImageText( + syncItemTitle, + R.drawable.ic_signed_out, + primaryTextColor() + ) { + onItemTapped.invoke( + ToolbarMenu.Item.SyncAccount(accountManager.accountState) + ) + } + } + } } @VisibleForTesting(otherwise = PRIVATE) @@ -373,7 +384,7 @@ open class DefaultToolbarMenu( historyItem, downloadsItem, extensionsItem, - syncMenuItem, + syncMenuItem(), BrowserMenuDivider(), findInPageItem, desktopSiteItem, diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt b/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt index 1778be13a0..c5474c2070 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt @@ -96,15 +96,26 @@ class HomeMenu( } } - private fun getSyncItemTitle(): String = - accountManager.accountProfileEmail ?: context.getString(R.string.sync_menu_sign_in) + private fun syncSignInMenuItem(): BrowserMenuImageText? { + val syncItemTitle = + if (context.components.backgroundServices.accountManagerAvailableQueue.isReady()) { + accountManager.accountProfileEmail ?: context.getString(R.string.sync_menu_sign_in) + } else { + null + } - private val syncSignInMenuItem = BrowserMenuImageText( - getSyncItemTitle(), - R.drawable.ic_synced_tabs, - primaryTextColor - ) { - onItemTapped.invoke(Item.SyncAccount(accountManager.accountState)) + return when (syncItemTitle) { + null -> null + else -> { + BrowserMenuImageText( + syncItemTitle, + R.drawable.ic_signed_out, + primaryTextColor + ) { + onItemTapped.invoke(Item.SyncAccount(accountManager.accountState)) + } + } + } } val desktopItem = BrowserMenuImageSwitch( @@ -212,7 +223,7 @@ class HomeMenu( historyItem, downloadsItem, extensionsItem, - syncSignInMenuItem, + syncSignInMenuItem(), accountAuthItem, if (Config.channel.isMozillaOnline) manageAccountAndDevicesItem else null, BrowserMenuDivider(),