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 0a1f3ee77..8c11adad2 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 @@ -50,7 +50,8 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) { object CollectionHeader : AdapterItem(CollectionHeaderViewHolder.LAYOUT_ID) data class CollectionItem( val collection: TabCollection, - val expanded: Boolean + val expanded: Boolean, + val sessionHasOpenTabs: Boolean ) : AdapterItem(CollectionViewHolder.LAYOUT_ID) { override fun sameAs(other: AdapterItem) = other is CollectionItem && collection.id == other.collection.id } @@ -140,8 +141,8 @@ class SessionControlAdapter( holder.bind(icon, header, description) } is CollectionViewHolder -> { - val (collection, expanded) = item as AdapterItem.CollectionItem - holder.bindSession(collection, expanded) + val (collection, expanded, sessionHasOpenTabs) = item as AdapterItem.CollectionItem + holder.bindSession(collection, expanded, sessionHasOpenTabs) } is TabInCollectionViewHolder -> { val (collection, tab, isLastTab) = item as AdapterItem.TabInCollectionItem diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt index f249a28d7..d9ea63f08 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt @@ -47,7 +47,7 @@ private fun normalModeAdapterItems( // If the collection is expanded, we want to add all of its tabs beneath it in the adapter collections.map { - AdapterItem.CollectionItem(it, expandedCollections.contains(it.id)) + AdapterItem.CollectionItem(it, expandedCollections.contains(it.id), tabs.isNotEmpty()) }.forEach { items.add(it) if (it.expanded) { diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt index e1fd3c840..4174d8d13 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt @@ -34,10 +34,11 @@ class CollectionViewHolder( private lateinit var collection: TabCollection private var expanded = false + private var sessionHasOpenTabs = false private var collectionMenu: CollectionItemMenu init { - collectionMenu = CollectionItemMenu(view.context) { + collectionMenu = CollectionItemMenu(view.context, sessionHasOpenTabs) { when (it) { is CollectionItemMenu.Item.DeleteCollection -> actionEmitter.onNext(CollectionAction.Delete(collection)) is CollectionItemMenu.Item.AddTab -> actionEmitter.onNext(CollectionAction.AddTab(collection)) @@ -68,9 +69,11 @@ class CollectionViewHolder( } } - fun bindSession(collection: TabCollection, expanded: Boolean) { + fun bindSession(collection: TabCollection, expanded: Boolean, sessionHasOpenTabs: Boolean) { this.collection = collection this.expanded = expanded + this.sessionHasOpenTabs = sessionHasOpenTabs + collectionMenu.sessionHasOpenTabs = sessionHasOpenTabs updateCollectionUI() } @@ -114,6 +117,7 @@ class CollectionViewHolder( class CollectionItemMenu( private val context: Context, + var sessionHasOpenTabs: Boolean, private val onItemTapped: (Item) -> Unit = {} ) { sealed class Item { @@ -137,7 +141,7 @@ class CollectionItemMenu( context.getString(R.string.add_tab) ) { onItemTapped.invoke(Item.AddTab) - }, + }.apply { visible = { sessionHasOpenTabs } }, SimpleBrowserMenuItem( context.getString(R.string.collection_rename) ) {