Issue #20704: Use AppStore for inactive expanded state

upstream-sync
Jonathan Almeida 3 years ago committed by mergify[bot]
parent 9cef9357b1
commit 8c43ccc0f6

@ -388,7 +388,8 @@ class TabsTrayFragment : AppCompatDialogFragment() {
browserInteractor, browserInteractor,
navigationInteractor, navigationInteractor,
trayInteractor, trayInteractor,
requireComponents.core.store requireComponents.core.store,
requireComponents.appStore
) )
isUserInputEnabled = false isUserInputEnabled = false
} }

@ -11,6 +11,7 @@ import androidx.annotation.VisibleForTesting
import androidx.recyclerview.widget.ConcatAdapter import androidx.recyclerview.widget.ConcatAdapter
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.sync.SyncedTabsAdapter import org.mozilla.fenix.sync.SyncedTabsAdapter
import org.mozilla.fenix.tabstray.browser.BrowserTabsAdapter import org.mozilla.fenix.tabstray.browser.BrowserTabsAdapter
@ -24,13 +25,15 @@ import org.mozilla.fenix.tabstray.viewholders.NormalBrowserPageViewHolder
import org.mozilla.fenix.tabstray.viewholders.PrivateBrowserPageViewHolder import org.mozilla.fenix.tabstray.viewholders.PrivateBrowserPageViewHolder
import org.mozilla.fenix.tabstray.viewholders.SyncedTabsPageViewHolder import org.mozilla.fenix.tabstray.viewholders.SyncedTabsPageViewHolder
@Suppress("LongParameterList")
class TrayPagerAdapter( class TrayPagerAdapter(
@VisibleForTesting internal val context: Context, @VisibleForTesting internal val context: Context,
@VisibleForTesting internal val tabsTrayStore: TabsTrayStore, @VisibleForTesting internal val tabsTrayStore: TabsTrayStore,
@VisibleForTesting internal val browserInteractor: BrowserTrayInteractor, @VisibleForTesting internal val browserInteractor: BrowserTrayInteractor,
@VisibleForTesting internal val navInteractor: NavigationInteractor, @VisibleForTesting internal val navInteractor: NavigationInteractor,
@VisibleForTesting internal val interactor: TabsTrayInteractor, @VisibleForTesting internal val interactor: TabsTrayInteractor,
@VisibleForTesting internal val browserStore: BrowserStore @VisibleForTesting internal val browserStore: BrowserStore,
@VisibleForTesting internal val appStore: AppStore
) : RecyclerView.Adapter<AbstractPageViewHolder>() { ) : RecyclerView.Adapter<AbstractPageViewHolder>() {
/** /**
@ -67,6 +70,7 @@ class TrayPagerAdapter(
itemView, itemView,
tabsTrayStore, tabsTrayStore,
browserStore, browserStore,
appStore,
interactor interactor
) )
} }

@ -37,7 +37,7 @@ sealed class InactiveTabViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
init { init {
itemView.apply { itemView.apply {
isActivated = InactiveTabsState.isExpanded isActivated = itemView.context.components.appStore.state.inactiveTabsExpanded
correctHeaderBorder(isActivated) correctHeaderBorder(isActivated)

@ -12,6 +12,7 @@ import androidx.recyclerview.widget.ListAdapter
import mozilla.components.browser.state.state.TabSessionState import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.tabstray.TabsTray import mozilla.components.browser.tabstray.TabsTray
import org.mozilla.fenix.components.Components import org.mozilla.fenix.components.Components
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.tabstray.TabsTrayInteractor import org.mozilla.fenix.tabstray.TabsTrayInteractor
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.AutoCloseDialogHolder import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.AutoCloseDialogHolder
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.FooterHolder import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.FooterHolder
@ -92,7 +93,7 @@ class InactiveTabsAdapter(
} }
// If we have items, but we should be in a collapsed state. // If we have items, but we should be in a collapsed state.
if (!InactiveTabsState.isExpanded) { if (!context.components.appStore.state.inactiveTabsExpanded) {
submitList(listOf(Item.Header)) submitList(listOf(Item.Header))
return return
} }

@ -7,11 +7,14 @@ package org.mozilla.fenix.tabstray.browser
import mozilla.components.browser.state.state.TabSessionState import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.tabstray.TabsTray import mozilla.components.browser.tabstray.TabsTray
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
class InactiveTabsController( class InactiveTabsController(
private val browserStore: BrowserStore, private val browserStore: BrowserStore,
private val appStore: AppStore,
private val tabFilter: (TabSessionState) -> Boolean, private val tabFilter: (TabSessionState) -> Boolean,
private val tray: TabsTray, private val tray: TabsTray,
private val metrics: MetricController private val metrics: MetricController
@ -21,7 +24,7 @@ class InactiveTabsController(
* the title showing. * the title showing.
*/ */
fun updateCardExpansion(isExpanded: Boolean) { fun updateCardExpansion(isExpanded: Boolean) {
InactiveTabsState.isExpanded = isExpanded appStore.dispatch(AppAction.UpdateInactiveExpanded(isExpanded))
metrics.track( metrics.track(
when (isExpanded) { when (isExpanded) {

@ -52,6 +52,7 @@ class NormalBrowserTrayList @JvmOverloads constructor(
DefaultInactiveTabsInteractor( DefaultInactiveTabsInteractor(
InactiveTabsController( InactiveTabsController(
context.components.core.store, context.components.core.store,
context.components.appStore,
inactiveTabsFilter, inactiveTabsFilter,
concatAdapter.inactiveTabsAdapter, concatAdapter.inactiveTabsAdapter,
context.components.analytics.metrics context.components.analytics.metrics

@ -13,12 +13,13 @@ import mozilla.components.browser.state.selector.selectedNormalTab
import mozilla.components.browser.state.state.TabSessionState import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.selection.SelectionHolder import org.mozilla.fenix.selection.SelectionHolder
import org.mozilla.fenix.tabstray.TabsTrayInteractor import org.mozilla.fenix.tabstray.TabsTrayInteractor
import org.mozilla.fenix.tabstray.TabsTrayStore import org.mozilla.fenix.tabstray.TabsTrayStore
import org.mozilla.fenix.tabstray.browser.containsTabId import org.mozilla.fenix.tabstray.browser.containsTabId
import org.mozilla.fenix.tabstray.browser.InactiveTabsState
import org.mozilla.fenix.tabstray.browser.maxActiveTime import org.mozilla.fenix.tabstray.browser.maxActiveTime
import org.mozilla.fenix.tabstray.ext.browserAdapter import org.mozilla.fenix.tabstray.ext.browserAdapter
import org.mozilla.fenix.tabstray.ext.defaultBrowserLayoutColumns import org.mozilla.fenix.tabstray.ext.defaultBrowserLayoutColumns
@ -38,6 +39,7 @@ class NormalBrowserPageViewHolder(
containerView: View, containerView: View,
private val tabsTrayStore: TabsTrayStore, private val tabsTrayStore: TabsTrayStore,
private val browserStore: BrowserStore, private val browserStore: BrowserStore,
private val appStore: AppStore,
interactor: TabsTrayInteractor, interactor: TabsTrayInteractor,
) : AbstractBrowserPageViewHolder(containerView, tabsTrayStore, interactor), SelectionHolder<TabSessionState> { ) : AbstractBrowserPageViewHolder(containerView, tabsTrayStore, interactor), SelectionHolder<TabSessionState> {
@ -87,7 +89,9 @@ class NormalBrowserPageViewHolder(
if (inactiveTabsAreEnabled && selectedTab.isNormalTabInactive(maxActiveTime)) { if (inactiveTabsAreEnabled && selectedTab.isNormalTabInactive(maxActiveTime)) {
val inactiveTabsList = browserStore.state.inactiveTabs val inactiveTabsList = browserStore.state.inactiveTabs
// We want to expand the inactive section first before we want to fire our scroll observer. // We want to expand the inactive section first before we want to fire our scroll observer.
InactiveTabsState.isExpanded = true
appStore.dispatch(AppAction.UpdateInactiveExpanded(true))
inactiveTabAdapter.observeFirstInsert { inactiveTabAdapter.observeFirstInsert {
inactiveTabsList.forEachIndexed { tabIndex, item -> inactiveTabsList.forEachIndexed { tabIndex, item ->
if (item.id == selectedTab.id) { if (item.id == selectedTab.id) {

Loading…
Cancel
Save