diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt index 6f76f4de2..01f308391 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryAdapter.kt @@ -116,7 +116,19 @@ class HistoryAdapter( view: View, private val actionEmitter: Observer ) : RecyclerView.ViewHolder(view) { - private val button = view.findViewById(R.id.delete_history_button) + private lateinit var mode: HistoryState.Mode + + private val button = view.findViewById(R.id.delete_history_button).apply { + setOnClickListener { + val mode = mode + if (mode is HistoryState.Mode.Editing && mode.selectedItems.isNotEmpty()) { + actionEmitter.onNext(HistoryAction.Delete.Some(mode.selectedItems)) + } else { + actionEmitter.onNext(HistoryAction.Delete.All) + } + } + } + private val text = view.findViewById(R.id.delete_history_button_text).apply { val color = ContextCompat.getColor(context, R.color.photonRed60) val drawable = ContextCompat.getDrawable(context, R.drawable.ic_delete) @@ -125,6 +137,8 @@ class HistoryAdapter( } fun bind(mode: HistoryState.Mode) { + this.mode = mode + val text = if (mode is HistoryState.Mode.Editing && mode.selectedItems.isNotEmpty()) { text.context.resources.getString(R.string.delete_history_items, mode.selectedItems.size) } else { diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryComponent.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryComponent.kt index d9368a553..e5b75055d 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryComponent.kt @@ -81,6 +81,11 @@ sealed class HistoryAction : Action { object BackPressed : HistoryAction() data class AddItemForRemoval(val item: HistoryItem) : HistoryAction() data class RemoveItemForRemoval(val item: HistoryItem) : HistoryAction() + + sealed class Delete : HistoryAction() { + object All : Delete() + data class Some(val items: List) : Delete() + } } sealed class HistoryChange : Change {