Close #19094: Open sign-in flow if no account is created for tabs tray

upstream-sync
Jonathan Almeida 3 years ago committed by Jonathan Almeida
parent 1ca7d55b4a
commit 69efd3a089

@ -15,6 +15,7 @@ import mozilla.components.browser.state.selector.normalTabs
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.prompt.ShareData
import mozilla.components.concept.tabstray.Tab
import mozilla.components.service.fxa.manager.FxaAccountManager
import org.mozilla.fenix.collections.CollectionsDialog
import org.mozilla.fenix.collections.show
import org.mozilla.fenix.components.TabCollectionStorage
@ -89,7 +90,8 @@ class DefaultNavigationInteractor(
private val dismissTabTrayAndNavigateHome: (String) -> Unit,
private val bookmarksUseCase: BookmarksUseCase,
private val tabsTrayStore: TabsTrayStore,
private val collectionStorage: TabCollectionStorage
private val collectionStorage: TabCollectionStorage,
private val accountManager: FxaAccountManager
) : NavigationInteractor {
override fun onTabTrayDismissed() {
@ -97,18 +99,26 @@ class DefaultNavigationInteractor(
}
override fun onAccountSettingsClicked() {
navController.navigateBlockingForAsyncNavGraph(
TabsTrayFragmentDirections.actionGlobalAccountSettingsFragment())
val isSignedIn = accountManager.authenticatedAccount() != null
val direction = if (isSignedIn) {
TabsTrayFragmentDirections.actionGlobalAccountSettingsFragment()
} else {
TabsTrayFragmentDirections.actionGlobalTurnOnSync()
}
navController.navigateBlockingForAsyncNavGraph(direction)
}
override fun onTabSettingsClicked() {
navController.navigateBlockingForAsyncNavGraph(
TabsTrayFragmentDirections.actionGlobalTabSettingsFragment())
TabsTrayFragmentDirections.actionGlobalTabSettingsFragment()
)
}
override fun onOpenRecentlyClosedClicked() {
navController.navigateBlockingForAsyncNavGraph(
TabsTrayFragmentDirections.actionGlobalRecentlyClosed())
TabsTrayFragmentDirections.actionGlobalRecentlyClosed()
)
metrics.track(Event.RecentlyClosedTabsOpened)
}

@ -116,7 +116,8 @@ class TabsTrayFragment : AppCompatDialogFragment(), TabsTrayInteractor {
dismissTabTray = ::dismissTabsTray,
dismissTabTrayAndNavigateHome = ::dismissTabsTrayAndNavigateHome,
bookmarksUseCase = requireComponents.useCases.bookmarksUseCases,
collectionStorage = requireComponents.core.tabCollectionStorage
collectionStorage = requireComponents.core.tabCollectionStorage,
accountManager = requireComponents.backgroundServices.accountManager
)
tabsTrayController = DefaultTabsTrayController(

@ -20,6 +20,7 @@ import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.state.createTab as createStateTab
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.tabstray.Tab
import mozilla.components.service.fxa.manager.FxaAccountManager
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Rule
@ -45,6 +46,7 @@ class NavigationInteractorTest {
private val bookmarksUseCase: BookmarksUseCase = mockk(relaxed = true)
private val context: Context = mockk(relaxed = true)
private val collectionStorage: TabCollectionStorage = mockk(relaxed = true)
private val accountManager: FxaAccountManager = mockk(relaxed = true)
@get:Rule
val disableNavGraphProviderAssertionRule = DisableNavGraphProviderAssertionRule()
@ -62,7 +64,8 @@ class NavigationInteractorTest {
dismissTabTrayAndNavigateHome,
bookmarksUseCase,
tabsTrayStore,
collectionStorage
collectionStorage,
accountManager
)
}
@ -146,10 +149,22 @@ class NavigationInteractorTest {
@Test
fun `onAccountSettingsClicked calls navigation on DefaultNavigationInteractor`() {
every { accountManager.authenticatedAccount() }.answers { mockk(relaxed = true) }
navigationInteractor.onAccountSettingsClicked()
verify(exactly = 1) { navController.navigate(TabsTrayFragmentDirections.actionGlobalAccountSettingsFragment()) }
}
@Test
fun `onAccountSettingsClicked when not logged in calls navigation to turn on sync`() {
every { accountManager.authenticatedAccount() }.answers { null }
navigationInteractor.onAccountSettingsClicked()
verify(exactly = 1) { navController.navigate(TabsTrayFragmentDirections.actionGlobalTurnOnSync()) }
}
@Test
fun `onTabSettingsClicked calls navigation on DefaultNavigationInteractor`() {
navigationInteractor.onTabSettingsClicked()

Loading…
Cancel
Save