1
0
Fork 0

For #13117 - Don't show add to collections button in private tabs tray

master
ekager 2020-07-31 14:21:00 -04:00 committed by Jeff Boek
parent 1d28f63737
commit f14b6d0385
2 changed files with 24 additions and 9 deletions

View File

@ -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.
*/ */

View File

@ -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)
} }
} }