[fenix] For https://github.com/mozilla-mobile/fenix/issues/18806: Show sync tabs or sync account sign in based on feature flag (https://github.com/mozilla-mobile/fenix/pull/18859)

* Show sync tabs or sync account sign in based on feature flag. Sign in navigates to account settings on click.

* lint and nits
pull/600/head
Elise Richards 3 years ago committed by GitHub
parent b42f68d7d4
commit 856e133f4d

@ -582,7 +582,7 @@ sealed class Event {
NEW_PRIVATE_TAB, SHARE, BACK, FORWARD, RELOAD, STOP, OPEN_IN_FENIX, NEW_PRIVATE_TAB, SHARE, BACK, FORWARD, RELOAD, STOP, OPEN_IN_FENIX,
SAVE_TO_COLLECTION, ADD_TO_TOP_SITES, ADD_TO_HOMESCREEN, QUIT, READER_MODE_ON, SAVE_TO_COLLECTION, ADD_TO_TOP_SITES, ADD_TO_HOMESCREEN, QUIT, READER_MODE_ON,
READER_MODE_OFF, OPEN_IN_APP, BOOKMARK, READER_MODE_APPEARANCE, ADDONS_MANAGER, READER_MODE_OFF, OPEN_IN_APP, BOOKMARK, READER_MODE_APPEARANCE, ADDONS_MANAGER,
BOOKMARKS, HISTORY, SYNC_TABS, DOWNLOADS, SET_DEFAULT_BROWSER BOOKMARKS, HISTORY, SYNC_TABS, DOWNLOADS, SET_DEFAULT_BROWSER, SYNC_ACCOUNT
} }
override val extras: Map<Events.browserMenuActionKeys, String>? override val extras: Map<Events.browserMenuActionKeys, String>?

@ -92,7 +92,7 @@ class DefaultBrowserToolbarMenuController(
Do exhaustive when (item) { Do exhaustive when (item) {
// TODO: These can be removed for https://github.com/mozilla-mobile/fenix/issues/17870 // TODO: These can be removed for https://github.com/mozilla-mobile/fenix/issues/17870
// todo === Start === // todo === Start ===
is ToolbarMenu.Item.InstallToHomeScreen -> { is ToolbarMenu.Item.InstallPwaToHomeScreen -> {
settings.installPwaOpened = true settings.installPwaOpened = true
MainScope().launch { MainScope().launch {
with(activity.components.useCases.webAppUseCases) { with(activity.components.useCases.webAppUseCases) {
@ -224,6 +224,12 @@ class DefaultBrowserToolbarMenuController(
BrowserFragmentDirections.actionBrowserFragmentToSyncedTabsFragment() BrowserFragmentDirections.actionBrowserFragmentToSyncedTabsFragment()
) )
} }
is ToolbarMenu.Item.SyncAccount -> browserAnimator.captureEngineViewAndDrawStatically {
navController.nav(
R.id.browserFragment,
BrowserFragmentDirections.actionBrowserFragmentToSyncedTabsFragment()
)
}
is ToolbarMenu.Item.RequestDesktop -> { is ToolbarMenu.Item.RequestDesktop -> {
currentSession?.let { currentSession?.let {
sessionUseCases.requestDesktopSite.invoke( sessionUseCases.requestDesktopSite.invoke(
@ -359,15 +365,12 @@ class DefaultBrowserToolbarMenuController(
@Suppress("ComplexMethod") @Suppress("ComplexMethod")
private fun trackToolbarItemInteraction(item: ToolbarMenu.Item) { private fun trackToolbarItemInteraction(item: ToolbarMenu.Item) {
val eventItem = when (item) { val eventItem = when (item) {
// TODO: These can be removed for https://github.com/mozilla-mobile/fenix/issues/17870
// todo === Start ===
is ToolbarMenu.Item.OpenInFenix -> Event.BrowserMenuItemTapped.Item.OPEN_IN_FENIX is ToolbarMenu.Item.OpenInFenix -> Event.BrowserMenuItemTapped.Item.OPEN_IN_FENIX
is ToolbarMenu.Item.InstallToHomeScreen -> Event.BrowserMenuItemTapped.Item.ADD_TO_HOMESCREEN is ToolbarMenu.Item.InstallPwaToHomeScreen -> Event.BrowserMenuItemTapped.Item.ADD_TO_HOMESCREEN
is ToolbarMenu.Item.Quit -> Event.BrowserMenuItemTapped.Item.QUIT is ToolbarMenu.Item.Quit -> Event.BrowserMenuItemTapped.Item.QUIT
is ToolbarMenu.Item.OpenInApp -> Event.BrowserMenuItemTapped.Item.OPEN_IN_APP
is ToolbarMenu.Item.CustomizeReaderView -> is ToolbarMenu.Item.CustomizeReaderView ->
Event.BrowserMenuItemTapped.Item.READER_MODE_APPEARANCE Event.BrowserMenuItemTapped.Item.READER_MODE_APPEARANCE
is ToolbarMenu.Item.OpenInApp -> Event.BrowserMenuItemTapped.Item.OPEN_IN_APP
// todo === End ===
is ToolbarMenu.Item.Back -> Event.BrowserMenuItemTapped.Item.BACK is ToolbarMenu.Item.Back -> Event.BrowserMenuItemTapped.Item.BACK
is ToolbarMenu.Item.Forward -> Event.BrowserMenuItemTapped.Item.FORWARD is ToolbarMenu.Item.Forward -> Event.BrowserMenuItemTapped.Item.FORWARD
is ToolbarMenu.Item.Reload -> Event.BrowserMenuItemTapped.Item.RELOAD is ToolbarMenu.Item.Reload -> Event.BrowserMenuItemTapped.Item.RELOAD
@ -385,6 +388,7 @@ class DefaultBrowserToolbarMenuController(
is ToolbarMenu.Item.AddToTopSites -> Event.BrowserMenuItemTapped.Item.ADD_TO_TOP_SITES is ToolbarMenu.Item.AddToTopSites -> Event.BrowserMenuItemTapped.Item.ADD_TO_TOP_SITES
is ToolbarMenu.Item.AddToHomeScreen -> Event.BrowserMenuItemTapped.Item.ADD_TO_HOMESCREEN is ToolbarMenu.Item.AddToHomeScreen -> Event.BrowserMenuItemTapped.Item.ADD_TO_HOMESCREEN
is ToolbarMenu.Item.SyncedTabs -> Event.BrowserMenuItemTapped.Item.SYNC_TABS is ToolbarMenu.Item.SyncedTabs -> Event.BrowserMenuItemTapped.Item.SYNC_TABS
is ToolbarMenu.Item.SyncAccount -> Event.BrowserMenuItemTapped.Item.SYNC_ACCOUNT
is ToolbarMenu.Item.Bookmark -> Event.BrowserMenuItemTapped.Item.BOOKMARK is ToolbarMenu.Item.Bookmark -> Event.BrowserMenuItemTapped.Item.BOOKMARK
is ToolbarMenu.Item.AddonsManager -> Event.BrowserMenuItemTapped.Item.ADDONS_MANAGER is ToolbarMenu.Item.AddonsManager -> Event.BrowserMenuItemTapped.Item.ADDONS_MANAGER
is ToolbarMenu.Item.Bookmarks -> Event.BrowserMenuItemTapped.Item.BOOKMARKS is ToolbarMenu.Item.Bookmarks -> Event.BrowserMenuItemTapped.Item.BOOKMARKS

@ -35,6 +35,7 @@ import mozilla.components.lib.state.ext.flowScoped
import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifAnyChanged import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifAnyChanged
import org.mozilla.fenix.FeatureFlags import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.FeatureFlags.tabsTrayRewrite
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
@ -216,7 +217,7 @@ open class DefaultToolbarMenu(
!context.settings().installPwaOpened !context.settings().installPwaOpened
} }
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.InstallToHomeScreen) onItemTapped.invoke(ToolbarMenu.Item.InstallPwaToHomeScreen)
} }
private val oldCoreMenuItems by lazy { private val oldCoreMenuItems by lazy {
@ -417,13 +418,26 @@ open class DefaultToolbarMenu(
context.getString(R.string.sync_menu_sign_in) context.getString(R.string.sync_menu_sign_in)
} }
val syncedTabs = BrowserMenuImageText( val syncTabsOrSignInItem =
syncItemTitle, if (tabsTrayRewrite) {
R.drawable.ic_synced_tabs, // If synced tabs are being shown in tabs tray, show sync sign in here.
primaryTextColor() BrowserMenuImageText(
) { syncItemTitle,
onItemTapped.invoke(ToolbarMenu.Item.SyncedTabs) R.drawable.ic_synced_tabs,
} primaryTextColor()
) {
onItemTapped.invoke(ToolbarMenu.Item.SyncAccount)
}
} else {
// If synced tabs are not shown in tabs tray, they should be shown here.
BrowserMenuImageText(
context.getString(R.string.synced_tabs),
R.drawable.ic_synced_tabs,
primaryTextColor()
) {
onItemTapped.invoke(ToolbarMenu.Item.SyncedTabs)
}
}
val findInPageItem = BrowserMenuImageText( val findInPageItem = BrowserMenuImageText(
label = context.getString(R.string.browser_menu_find_in_page), label = context.getString(R.string.browser_menu_find_in_page),
@ -548,7 +562,7 @@ open class DefaultToolbarMenu(
historyItem, historyItem,
downloadsItem, downloadsItem,
extensionsItem, extensionsItem,
syncedTabs, syncTabsOrSignInItem,
BrowserMenuDivider(), BrowserMenuDivider(),
findInPageItem, findInPageItem,
desktopSiteItem, desktopSiteItem,

@ -20,9 +20,10 @@ interface ToolbarMenu {
object OpenInFenix : Item() object OpenInFenix : Item()
object SaveToCollection : Item() object SaveToCollection : Item()
object AddToTopSites : Item() object AddToTopSites : Item()
object InstallToHomeScreen : Item() object InstallPwaToHomeScreen : Item()
object AddToHomeScreen : Item() object AddToHomeScreen : Item()
object SyncedTabs : Item() object SyncedTabs : Item()
object SyncAccount : Item()
object AddonsManager : Item() object AddonsManager : Item()
object Quit : Item() object Quit : Item()
object OpenInApp : Item() object OpenInApp : Item()

@ -214,6 +214,9 @@
<action <action
android:id="@+id/action_browserFragment_to_settingsFragment" android:id="@+id/action_browserFragment_to_settingsFragment"
app:destination="@id/settingsFragment" /> app:destination="@id/settingsFragment" />
<action
android:id="@+id/action_browserFragment_to_syncAccountSettingsFragment"
app:destination="@id/accountSettingsFragment" />
<action <action
android:id="@+id/action_browserFragment_to_createShortcutFragment" android:id="@+id/action_browserFragment_to_createShortcutFragment"
app:destination="@id/createShortcutFragment" /> app:destination="@id/createShortcutFragment" />

Loading…
Cancel
Save