diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt b/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt index bccf6995da..f81d1d16ee 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt @@ -28,8 +28,6 @@ import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.home.HomeScreenViewModel import org.mozilla.fenix.tabstray.browser.BrowserTrayInteractor import org.mozilla.fenix.tabstray.browser.DefaultBrowserTrayInteractor -import org.mozilla.fenix.tabstray.browser.RemoveTabUseCaseWrapper -import org.mozilla.fenix.tabstray.browser.SelectTabUseCaseWrapper import org.mozilla.fenix.tabstray.syncedtabs.SyncedTabsInteractor class TabsTrayFragment : AppCompatDialogFragment(), TabsTrayInteractor { @@ -41,23 +39,6 @@ class TabsTrayFragment : AppCompatDialogFragment(), TabsTrayInteractor { private val tabLayoutMediator = ViewBoundFeatureWrapper() private val tabCounterBinding = ViewBoundFeatureWrapper() - private val selectTabUseCase by lazy { - SelectTabUseCaseWrapper( - requireComponents.analytics.metrics, - requireComponents.useCases.tabsUseCases.selectTab - ) { - navigateToBrowser() - } - } - - private val removeUseCases by lazy { - RemoveTabUseCaseWrapper( - requireComponents.analytics.metrics - ) { - tabRemoved(it) - } - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setStyle(STYLE_NO_TITLE, R.style.TabTrayDialogStyle) @@ -86,12 +67,12 @@ class TabsTrayFragment : AppCompatDialogFragment(), TabsTrayInteractor { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - browserTrayInteractor = DefaultBrowserTrayInteractor( + val browserTrayInteractor = DefaultBrowserTrayInteractor( tabsTrayStore, - selectTabUseCase, - removeUseCases, + this@TabsTrayFragment, + requireComponents.useCases.tabsUseCases.selectTab, requireComponents.settings, - this + requireComponents.analytics.metrics ) val navigationInteractor = diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTrayInteractor.kt b/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTrayInteractor.kt index 8596347c9c..bf827ac0ce 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTrayInteractor.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/browser/BrowserTrayInteractor.kt @@ -12,6 +12,7 @@ import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.support.base.feature.UserInteractionHandler import org.mozilla.fenix.selection.SelectionInteractor import org.mozilla.fenix.tabstray.TabsTrayAction +import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.tabstray.TabsTrayInteractor import org.mozilla.fenix.tabstray.TrayPagerAdapter import org.mozilla.fenix.tabstray.ext.numberOfGridColumns @@ -41,17 +42,30 @@ interface BrowserTrayInteractor : SelectionInteractor, UserInteractionHandl */ class DefaultBrowserTrayInteractor( private val store: TabsTrayStore, - private val selectTabUseCase: TabsUseCases.SelectTabUseCase, - private val removeUseCases: TabsUseCases.RemoveTabUseCase, + private val trayInteractor: TabsTrayInteractor, + private val selectTab: TabsUseCases.SelectTabUseCase, private val settings: Settings, - private val trayInteractor: TabsTrayInteractor + private val metrics: MetricController ) : BrowserTrayInteractor { + private val selectTabWrapper by lazy { + SelectTabUseCaseWrapper(metrics, selectTab) { + trayInteractor.navigateToBrowser() + } + } + + private val removeTabWrapper by lazy { + RemoveTabUseCaseWrapper(metrics) { + // Handle removal from the interactor where we can also handle "undo" visuals. + trayInteractor.tabRemoved(it) + } + } + /** * See [SelectionInteractor.open] */ override fun open(item: Tab) { - selectTabUseCase.invoke(item.id) + selectTabWrapper.invoke(item.id) trayInteractor.navigateToBrowser() } @@ -59,7 +73,7 @@ class DefaultBrowserTrayInteractor( * See [BrowserTrayInteractor.close]. */ override fun close(tab: Tab) { - removeUseCases.invoke(tab.id) + removeTabWrapper.invoke(tab.id) } /**