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 9213635e90..1778be13a0 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt @@ -19,10 +19,12 @@ import mozilla.components.browser.menu.item.BrowserMenuDivider import mozilla.components.browser.menu.item.BrowserMenuHighlightableItem import mozilla.components.browser.menu.item.BrowserMenuImageSwitch import mozilla.components.browser.menu.item.BrowserMenuImageText +import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import mozilla.components.concept.sync.AccountObserver import mozilla.components.concept.sync.AuthType import mozilla.components.concept.sync.OAuthAccount import mozilla.components.support.ktx.android.content.getColorFromAttr +import org.mozilla.fenix.Config import org.mozilla.fenix.R import org.mozilla.fenix.components.accounts.AccountState import org.mozilla.fenix.components.accounts.FenixAccountManager @@ -46,6 +48,10 @@ class HomeMenu( object Downloads : Item() object Extensions : Item() data class SyncAccount(val accountState: AccountState) : Item() + /** + * A button item to open up the settings page of FxA, shown up in mozilla online builds. + */ + object ManageAccountAndDevices : Item() object WhatsNew : Item() object Help : Item() object CustomizeHome : Item() @@ -145,6 +151,13 @@ class HomeMenu( onItemTapped.invoke(Item.Extensions) } + val manageAccountAndDevicesItem = SimpleBrowserMenuItem( + context.getString(R.string.browser_menu_manage_account_and_devices), + textColorResource = primaryTextColor + ) { + onItemTapped.invoke(Item.ManageAccountAndDevices) + } + val whatsNewItem = BrowserMenuHighlightableItem( context.getString(R.string.browser_menu_whats_new), R.drawable.ic_whats_new, @@ -201,6 +214,7 @@ class HomeMenu( extensionsItem, syncSignInMenuItem, accountAuthItem, + if (Config.channel.isMozillaOnline) manageAccountAndDevicesItem else null, BrowserMenuDivider(), desktopItem, BrowserMenuDivider(), diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeMenuBuilder.kt b/app/src/main/java/org/mozilla/fenix/home/HomeMenuBuilder.kt index ae059b9be9..ce6fe5f116 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeMenuBuilder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeMenuBuilder.kt @@ -16,6 +16,7 @@ import mozilla.appservices.places.BookmarkRoot import mozilla.components.browser.menu.view.MenuButton import mozilla.components.service.glean.private.NoExtras import org.mozilla.fenix.BrowserDirection +import org.mozilla.fenix.Config import org.mozilla.fenix.GleanMetrics.Events import org.mozilla.fenix.GleanMetrics.HomeScreen import org.mozilla.fenix.HomeActivity @@ -77,7 +78,7 @@ class HomeMenuBuilder( /** * Callback invoked when a menu item is tapped on. */ - @Suppress("LongMethod") + @Suppress("LongMethod", "ComplexMethod") @VisibleForTesting(otherwise = PRIVATE) internal fun onItemTapped(item: HomeMenu.Item) { if (item !is HomeMenu.Item.DesktopMode) { @@ -114,6 +115,18 @@ class HomeMenuBuilder( } ) } + HomeMenu.Item.ManageAccountAndDevices -> { + homeActivity.openToBrowserAndLoad( + searchTermOrURL = + if (context.settings().allowDomesticChinaFxaServer) { + mozilla.appservices.fxaclient.Config.Server.CHINA.contentUrl + "/settings" + } else { + mozilla.appservices.fxaclient.Config.Server.RELEASE.contentUrl + "/settings" + }, + newTab = true, + from = BrowserDirection.FromHome + ) + } HomeMenu.Item.Bookmarks -> { navController.nav( R.id.homeFragment, diff --git a/app/src/main/res/values-zh-rCN/mozonline_strings.xml b/app/src/main/res/values-zh-rCN/mozonline_strings.xml index 327141a311..89cea478ad 100644 --- a/app/src/main/res/values-zh-rCN/mozonline_strings.xml +++ b/app/src/main/res/values-zh-rCN/mozonline_strings.xml @@ -40,5 +40,9 @@ firefox.com.cn/pair 并扫描网站上的二维码]]> https://firefox.com.cn/pair]]> + + + + 管理账户和设备 diff --git a/app/src/main/res/values/mozonline_strings.xml b/app/src/main/res/values/mozonline_strings.xml index f6ad5b979d..fe3bfb1700 100644 --- a/app/src/main/res/values/mozonline_strings.xml +++ b/app/src/main/res/values/mozonline_strings.xml @@ -39,4 +39,8 @@ firefox.com.cn/pair]]> https://firefox.com.cn/pair]]> + + + + Manage Account and Devices