Skip to content

Commit

Permalink
Close mozilla-mobile#19094: Open sign-in flow if no account is create…
Browse files Browse the repository at this point in the history
…d for tabs tray
  • Loading branch information
jonalmeida committed Apr 19, 2021
1 parent 8bb7abc commit 94f5bcc
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 7 deletions.
Expand Up @@ -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
Expand Down Expand Up @@ -89,26 +90,35 @@ 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() {
dismissTabTray()
}

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)
}

Expand Down
Expand Up @@ -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(
Expand Down
Expand Up @@ -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
Expand All @@ -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()
Expand All @@ -62,7 +64,8 @@ class NavigationInteractorTest {
dismissTabTrayAndNavigateHome,
bookmarksUseCase,
tabsTrayStore,
collectionStorage
collectionStorage,
accountManager
)
}

Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit 94f5bcc

Please sign in to comment.