From c7c6fd516a7a4113c4a2569af22120ad64b5c6a2 Mon Sep 17 00:00:00 2001 From: mcarare <“mihai.carare.dev@gmail.com”> Date: Mon, 2 Mar 2020 15:24:37 +0200 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/8766: Show collections only when tabs are open or collection exists --- .../home/sessioncontrol/SessionControlView.kt | 61 +++++++++++++------ 1 file changed, 43 insertions(+), 18 deletions(-) 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 1be3f52be7..49e3adb1b2 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 @@ -50,31 +50,56 @@ private fun normalModeAdapterItems( items.add(AdapterItem.TabHeader(false, tabs.isNotEmpty())) - if (tabs.isNotEmpty()) { - items.addAll(tabs.reversed().map(AdapterItem::TabItem)) - items.add(AdapterItem.SaveTabGroup) - } else { - items.add(noTabMessage) - } + when { + tabs.isNotEmpty() && collections.isNotEmpty() -> { + showTabs(items, tabs) + showCollections(collections, expandedCollections, tabs, items) + } - items.add(AdapterItem.CollectionHeader) - if (collections.isNotEmpty()) { - // 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), tabs.isNotEmpty()) - }.forEach { - items.add(it) - if (it.expanded) { - items.addAll(collectionTabItems(it.collection)) - } + tabs.isNotEmpty() && collections.isEmpty() -> { + showTabs(items, tabs) + items.add(noCollectionMessage) + } + + tabs.isEmpty() && collections.isNotEmpty() -> { + items.add(noTabMessage) + showCollections(collections, expandedCollections, tabs, items) + } + + tabs.isEmpty() && collections.isEmpty() -> { + items.add(noTabMessage) } - } else { - items.add(noCollectionMessage) } return items } +private fun showTabs( + items: MutableList, + tabs: List +) { + items.addAll(tabs.reversed().map(AdapterItem::TabItem)) + items.add(AdapterItem.SaveTabGroup) +} + +private fun showCollections( + collections: List, + expandedCollections: Set, + tabs: List, + items: MutableList +) { + // If the collection is expanded, we want to add all of its tabs beneath it in the adapter + items.add(AdapterItem.CollectionHeader) + collections.map { + AdapterItem.CollectionItem(it, expandedCollections.contains(it.id), tabs.isNotEmpty()) + }.forEach { + items.add(it) + if (it.expanded) { + items.addAll(collectionTabItems(it.collection)) + } + } +} + private fun privateModeAdapterItems(tabs: List): List { val items = mutableListOf() items.add(AdapterItem.TabHeader(true, tabs.isNotEmpty()))