For #12125: Handle visibility updates for add to collection button.
parent
2668a68678
commit
94273bc274
|
@ -218,7 +218,8 @@ class HomeFragment : Fragment() {
|
||||||
sessionControlView = SessionControlView(
|
sessionControlView = SessionControlView(
|
||||||
view.sessionControlRecyclerView,
|
view.sessionControlRecyclerView,
|
||||||
sessionControlInteractor,
|
sessionControlInteractor,
|
||||||
homeViewModel
|
homeViewModel,
|
||||||
|
requireComponents.core.store.state.normalTabs.isNotEmpty()
|
||||||
)
|
)
|
||||||
|
|
||||||
updateSessionControlView(view)
|
updateSessionControlView(view)
|
||||||
|
|
|
@ -108,7 +108,8 @@ class AdapterItemDiffCallback : DiffUtil.ItemCallback<AdapterItem>() {
|
||||||
}
|
}
|
||||||
|
|
||||||
class SessionControlAdapter(
|
class SessionControlAdapter(
|
||||||
private val interactor: SessionControlInteractor
|
private val interactor: SessionControlInteractor,
|
||||||
|
private val hasNormalTabsOpened: Boolean
|
||||||
) : ListAdapter<AdapterItem, RecyclerView.ViewHolder>(AdapterItemDiffCallback()) {
|
) : ListAdapter<AdapterItem, RecyclerView.ViewHolder>(AdapterItemDiffCallback()) {
|
||||||
|
|
||||||
// This method triggers the ComplexMethod lint error when in fact it's quite simple.
|
// 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)
|
ButtonTipViewHolder.LAYOUT_ID -> ButtonTipViewHolder(view, interactor)
|
||||||
TopSiteViewHolder.LAYOUT_ID -> TopSiteViewHolder(view, interactor)
|
TopSiteViewHolder.LAYOUT_ID -> TopSiteViewHolder(view, interactor)
|
||||||
PrivateBrowsingDescriptionViewHolder.LAYOUT_ID -> PrivateBrowsingDescriptionViewHolder(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)
|
CollectionHeaderViewHolder.LAYOUT_ID -> CollectionHeaderViewHolder(view)
|
||||||
CollectionViewHolder.LAYOUT_ID -> CollectionViewHolder(view, interactor)
|
CollectionViewHolder.LAYOUT_ID -> CollectionViewHolder(view, interactor)
|
||||||
TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(view, interactor, differentLastItem = true)
|
TabInCollectionViewHolder.LAYOUT_ID -> TabInCollectionViewHolder(view, interactor, differentLastItem = true)
|
||||||
|
|
|
@ -114,12 +114,13 @@ private fun collectionTabItems(collection: TabCollection) = collection.tabs.mapI
|
||||||
class SessionControlView(
|
class SessionControlView(
|
||||||
override val containerView: View?,
|
override val containerView: View?,
|
||||||
interactor: SessionControlInteractor,
|
interactor: SessionControlInteractor,
|
||||||
private var homeScreenViewModel: HomeScreenViewModel
|
private var homeScreenViewModel: HomeScreenViewModel,
|
||||||
|
private val hasNormalTabsOpened: Boolean
|
||||||
) : LayoutContainer {
|
) : LayoutContainer {
|
||||||
|
|
||||||
val view: RecyclerView = containerView as RecyclerView
|
val view: RecyclerView = containerView as RecyclerView
|
||||||
|
|
||||||
private val sessionControlAdapter = SessionControlAdapter(interactor)
|
private val sessionControlAdapter = SessionControlAdapter(interactor, hasNormalTabsOpened)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
view.apply {
|
view.apply {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
package org.mozilla.fenix.home.sessioncontrol.viewholders
|
package org.mozilla.fenix.home.sessioncontrol.viewholders
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import kotlinx.android.synthetic.main.no_collections_message.view.*
|
import kotlinx.android.synthetic.main.no_collections_message.view.*
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.ext.ViewHolder
|
import org.mozilla.fenix.ext.ViewHolder
|
||||||
|
@ -12,13 +13,15 @@ import org.mozilla.fenix.home.sessioncontrol.CollectionInteractor
|
||||||
|
|
||||||
open class NoCollectionsMessageViewHolder(
|
open class NoCollectionsMessageViewHolder(
|
||||||
view: View,
|
view: View,
|
||||||
interactor: CollectionInteractor
|
interactor: CollectionInteractor,
|
||||||
|
hasNormalTabsOpened: Boolean
|
||||||
) : ViewHolder(view) {
|
) : ViewHolder(view) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
view.add_tabs_to_collections_button.setOnClickListener {
|
view.add_tabs_to_collections_button.setOnClickListener {
|
||||||
interactor.onAddTabsToCollectionTapped()
|
interactor.onAddTabsToCollectionTapped()
|
||||||
}
|
}
|
||||||
|
view.add_tabs_to_collections_button.isVisible = hasNormalTabsOpened
|
||||||
}
|
}
|
||||||
companion object {
|
companion object {
|
||||||
const val LAYOUT_ID = R.layout.no_collections_message
|
const val LAYOUT_ID = R.layout.no_collections_message
|
||||||
|
|
Loading…
Reference in New Issue