From 94273bc274c60e076983b1cbed2984a5af21708c Mon Sep 17 00:00:00 2001 From: mcarare Date: Mon, 6 Jul 2020 20:22:29 +0300 Subject: [PATCH] For #12125: Handle visibility updates for add to collection button. --- app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt | 3 ++- .../fenix/home/sessioncontrol/SessionControlAdapter.kt | 6 ++++-- .../mozilla/fenix/home/sessioncontrol/SessionControlView.kt | 5 +++-- .../viewholders/NoCollectionsMessageViewHolder.kt | 5 ++++- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index f2993aa86..b70ae5f9d 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -218,7 +218,8 @@ class HomeFragment : Fragment() { sessionControlView = SessionControlView( view.sessionControlRecyclerView, sessionControlInteractor, - homeViewModel + homeViewModel, + requireComponents.core.store.state.normalTabs.isNotEmpty() ) updateSessionControlView(view) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt index d19f3c1af..c9441f99e 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt @@ -108,7 +108,8 @@ class AdapterItemDiffCallback : DiffUtil.ItemCallback() { } class SessionControlAdapter( - private val interactor: SessionControlInteractor + private val interactor: SessionControlInteractor, + private val hasNormalTabsOpened: Boolean ) : ListAdapter(AdapterItemDiffCallback()) { // This method triggers the ComplexMethod lint error when in fact it's quite simple. @@ -119,7 +120,8 @@ class SessionControlAdapter( ButtonTipViewHolder.LAYOUT_ID -> ButtonTipViewHolder(view, interactor) TopSiteViewHolder.LAYOUT_ID -> TopSiteViewHolder(view, interactor) PrivateBrowsingDescriptionViewHolder.LAYOUT_ID -> PrivateBrowsingDescriptionViewHolder(view, interactor) - NoCollectionsMessageViewHolder.LAYOUT_ID -> NoCollectionsMessageViewHolder(view, interactor) + NoCollectionsMessageViewHolder.LAYOUT_ID -> + NoCollectionsMessageViewHolder(view, interactor, hasNormalTabsOpened) CollectionHeaderViewHolder.LAYOUT_ID -> CollectionHeaderViewHolder(view) CollectionViewHolder.LAYOUT_ID -> CollectionViewHolder(view, interactor) TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(view, interactor, differentLastItem = true) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt index 41e4b1ad0..d24b62662 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlView.kt @@ -114,12 +114,13 @@ private fun collectionTabItems(collection: TabCollection) = collection.tabs.mapI class SessionControlView( override val containerView: View?, interactor: SessionControlInteractor, - private var homeScreenViewModel: HomeScreenViewModel + private var homeScreenViewModel: HomeScreenViewModel, + private val hasNormalTabsOpened: Boolean ) : LayoutContainer { val view: RecyclerView = containerView as RecyclerView - private val sessionControlAdapter = SessionControlAdapter(interactor) + private val sessionControlAdapter = SessionControlAdapter(interactor, hasNormalTabsOpened) init { view.apply { diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/NoCollectionsMessageViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/NoCollectionsMessageViewHolder.kt index 8c7421856..1882351c5 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/NoCollectionsMessageViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/NoCollectionsMessageViewHolder.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders import android.view.View +import androidx.core.view.isVisible import kotlinx.android.synthetic.main.no_collections_message.view.* import org.mozilla.fenix.R import org.mozilla.fenix.ext.ViewHolder @@ -12,13 +13,15 @@ import org.mozilla.fenix.home.sessioncontrol.CollectionInteractor open class NoCollectionsMessageViewHolder( view: View, - interactor: CollectionInteractor + interactor: CollectionInteractor, + hasNormalTabsOpened: Boolean ) : ViewHolder(view) { init { view.add_tabs_to_collections_button.setOnClickListener { interactor.onAddTabsToCollectionTapped() } + view.add_tabs_to_collections_button.isVisible = hasNormalTabsOpened } companion object { const val LAYOUT_ID = R.layout.no_collections_message