For #13117 - Don't show add to collections button in private tabs tray
parent
1d28f63737
commit
f14b6d0385
|
@ -20,7 +20,8 @@ import org.mozilla.fenix.tabtray.SaveToCollectionsButtonAdapter.ViewHolder
|
||||||
* multiple [RecyclerView.Adapter] in one [RecyclerView].
|
* multiple [RecyclerView.Adapter] in one [RecyclerView].
|
||||||
*/
|
*/
|
||||||
class SaveToCollectionsButtonAdapter(
|
class SaveToCollectionsButtonAdapter(
|
||||||
private val interactor: TabTrayInteractor
|
private val interactor: TabTrayInteractor,
|
||||||
|
private val isPrivate: Boolean = false
|
||||||
) : ListAdapter<Item, ViewHolder>(DiffCallback) {
|
) : ListAdapter<Item, ViewHolder>(DiffCallback) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
@ -38,14 +39,19 @@ class SaveToCollectionsButtonAdapter(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
(payloads[0] as TabTrayView.TabChange).let {
|
when (val change = payloads[0]) {
|
||||||
holder.itemView.isVisible = it == TabTrayView.TabChange.NORMAL
|
is TabTrayView.TabChange -> {
|
||||||
|
holder.itemView.isVisible = change == TabTrayView.TabChange.NORMAL
|
||||||
|
}
|
||||||
|
is MultiselectModeChange -> {
|
||||||
|
holder.itemView.isVisible = change == MultiselectModeChange.NORMAL
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
holder.itemView.isVisible =
|
holder.itemView.isVisible = !isPrivate &&
|
||||||
interactor.onModeRequested() is TabTrayDialogFragmentState.Mode.Normal
|
interactor.onModeRequested() is TabTrayDialogFragmentState.Mode.Normal
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemViewType(position: Int): Int {
|
override fun getItemViewType(position: Int): Int {
|
||||||
|
@ -58,6 +64,10 @@ class SaveToCollectionsButtonAdapter(
|
||||||
override fun areContentsTheSame(oldItem: Item, newItem: Item) = true
|
override fun areContentsTheSame(oldItem: Item, newItem: Item) = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum class MultiselectModeChange {
|
||||||
|
MULTISELECT, NORMAL
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An object to identify the data type.
|
* An object to identify the data type.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -41,6 +41,7 @@ import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.components.metrics.Event
|
import org.mozilla.fenix.components.metrics.Event
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
import org.mozilla.fenix.ext.settings
|
import org.mozilla.fenix.ext.settings
|
||||||
|
import org.mozilla.fenix.tabtray.SaveToCollectionsButtonAdapter.MultiselectModeChange
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View that contains and configures the BrowserAwesomeBar
|
* View that contains and configures the BrowserAwesomeBar
|
||||||
|
@ -72,7 +73,7 @@ class TabTrayView(
|
||||||
|
|
||||||
private val bottomSheetCallback: BottomSheetBehavior.BottomSheetCallback
|
private val bottomSheetCallback: BottomSheetBehavior.BottomSheetCallback
|
||||||
private var tabsTouchHelper: TabsTouchHelper
|
private var tabsTouchHelper: TabsTouchHelper
|
||||||
private val collectionsButtonAdapter = SaveToCollectionsButtonAdapter(interactor)
|
private val collectionsButtonAdapter = SaveToCollectionsButtonAdapter(interactor, isPrivate)
|
||||||
|
|
||||||
private var hasLoaded = false
|
private var hasLoaded = false
|
||||||
|
|
||||||
|
@ -272,7 +273,7 @@ class TabTrayView(
|
||||||
val oldMode = mode
|
val oldMode = mode
|
||||||
|
|
||||||
if (oldMode::class != state.mode::class) {
|
if (oldMode::class != state.mode::class) {
|
||||||
updateTabsForModeChanged()
|
updateTabsForMultiselectModeChanged(state.mode is TabTrayDialogFragmentState.Mode.MultiSelect)
|
||||||
if (view.context.settings().accessibilityServicesEnabled) {
|
if (view.context.settings().accessibilityServicesEnabled) {
|
||||||
view.announceForAccessibility(
|
view.announceForAccessibility(
|
||||||
if (state.mode == TabTrayDialogFragmentState.Mode.Normal) view.context.getString(
|
if (state.mode == TabTrayDialogFragmentState.Mode.Normal) view.context.getString(
|
||||||
|
@ -419,13 +420,17 @@ class TabTrayView(
|
||||||
view.tab_layout.isVisible = !multiselect
|
view.tab_layout.isVisible = !multiselect
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateTabsForModeChanged() {
|
private fun updateTabsForMultiselectModeChanged(inMultiselectMode: Boolean) {
|
||||||
view.tabsTray.apply {
|
view.tabsTray.apply {
|
||||||
val tabs = view.context.components.core.store.state.getNormalOrPrivateTabs(
|
val tabs = view.context.components.core.store.state.getNormalOrPrivateTabs(
|
||||||
isPrivateModeSelected
|
isPrivateModeSelected
|
||||||
)
|
)
|
||||||
|
|
||||||
collectionsButtonAdapter.notifyItemChanged(0)
|
collectionsButtonAdapter.notifyItemChanged(
|
||||||
|
0,
|
||||||
|
if (inMultiselectMode) MultiselectModeChange.MULTISELECT else MultiselectModeChange.NORMAL
|
||||||
|
)
|
||||||
|
|
||||||
tabsAdapter.notifyItemRangeChanged(0, tabs.size, true)
|
tabsAdapter.notifyItemRangeChanged(0, tabs.size, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue