From b511e4a8b71da86f4ac9614ce5f15a3cae1d4951 Mon Sep 17 00:00:00 2001 From: "codrut.topliceanu" Date: Wed, 9 Jun 2021 15:16:28 +0300 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/19739 - Adds start tabsTray with multiSelect support --- .../mozilla/fenix/tabstray/TabsTrayFragment.kt | 16 +++++++++++++++- .../tabstray/browser/SelectionBannerBinding.kt | 3 --- .../tabstray/browser/SelectionHandleBinding.kt | 3 --- 3 files changed, 15 insertions(+), 7 deletions(-) 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 c7233d11a..3de840197 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayFragment.kt @@ -17,6 +17,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.tabs.TabLayout import kotlinx.android.synthetic.main.component_tabstray2.* @@ -87,7 +88,20 @@ class TabsTrayFragment : AppCompatDialogFragment() { val containerView = inflater.inflate(R.layout.fragment_tab_tray_dialog, container, false) inflater.inflate(R.layout.component_tabstray2, containerView as ViewGroup, true) - tabsTrayStore = StoreProvider.get(this) { TabsTrayStore() } + val args by navArgs() + val initialMode = if (args.enterMultiselect) { + TabsTrayState.Mode.Select(emptySet()) + } else { + TabsTrayState.Mode.Normal + } + + tabsTrayStore = StoreProvider.get(this) { + TabsTrayStore( + initialState = TabsTrayState( + mode = initialMode + ) + ) + } fabView = LayoutInflater.from(containerView.context) .inflate(R.layout.component_tabstray_fab, containerView, true) diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionBannerBinding.kt b/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionBannerBinding.kt index 117c23eff..506d833bf 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionBannerBinding.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionBannerBinding.kt @@ -15,7 +15,6 @@ import kotlinx.android.synthetic.main.tabstray_multiselect_items.view.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.map import mozilla.components.lib.state.helpers.AbstractBinding import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged @@ -70,8 +69,6 @@ class SelectionBannerBinding( override suspend fun onState(flow: Flow) { flow.map { it.mode } - // ignore initial mode update; we never start in select mode. - .drop(1) .ifChanged() .collect { mode -> val isSelectMode = mode is Select diff --git a/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionHandleBinding.kt b/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionHandleBinding.kt index 0e850a1d2..4e6ecf9b7 100644 --- a/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionHandleBinding.kt +++ b/app/src/main/java/org/mozilla/fenix/tabstray/browser/SelectionHandleBinding.kt @@ -13,7 +13,6 @@ import androidx.core.view.updateLayoutParams import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.map import mozilla.components.lib.state.helpers.AbstractBinding import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged @@ -43,8 +42,6 @@ class SelectionHandleBinding( override suspend fun onState(flow: Flow) { flow.map { it.mode } - // ignore initial mode update; we never start in select mode. - .drop(1) .ifChanged() .collect { mode -> val isSelectMode = mode is Mode.Select