diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt index ed427e89..74f1df0f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt @@ -2,6 +2,7 @@ package com.simplemobiletools.smsmessenger.adapters import android.content.Intent import android.graphics.Typeface +import android.text.TextUtils import android.view.Menu import android.view.View import android.view.ViewGroup @@ -9,6 +10,7 @@ import android.widget.TextView import com.bumptech.glide.Glide import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog +import com.simplemobiletools.commons.extensions.addBlockedNumber import com.simplemobiletools.commons.extensions.formatDateOrTime import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.helpers.KEY_PHONE @@ -45,6 +47,7 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis when (id) { R.id.cab_add_number_to_contact -> addNumberToContact() + R.id.cab_block_number -> askConfirmBlock() R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() } @@ -74,6 +77,37 @@ class ConversationsAdapter(activity: SimpleActivity, var conversations: ArrayLis override fun getItemCount() = conversations.size + private fun askConfirmBlock() { + val numbers = TextUtils.join(", ", getSelectedItems().distinctBy { it.phoneNumber }.map { it.phoneNumber }) + val baseString = R.string.block_confirmation + val question = String.format(resources.getString(baseString), numbers) + + ConfirmationDialog(activity, question) { + blockNumbers() + } + } + + private fun blockNumbers() { + if (selectedKeys.isEmpty()) { + return + } + + val numbersToBlock = getSelectedItems() + val positions = getSelectedItemPositions() + conversations.removeAll(numbersToBlock) + + ensureBackgroundThread { + numbersToBlock.map { it.phoneNumber }.forEach { number -> + activity.addBlockedNumber(number) + } + + activity.runOnUiThread { + removeSelectedItems(positions) + finishActMode() + } + } + } + private fun askConfirmDelete() { val itemsCnt = selectedKeys.size val items = resources.getQuantityString(R.plurals.delete_conversations, itemsCnt, itemsCnt) diff --git a/app/src/main/res/menu/cab_conversations.xml b/app/src/main/res/menu/cab_conversations.xml index 54c3891e..84e02dc5 100644 --- a/app/src/main/res/menu/cab_conversations.xml +++ b/app/src/main/res/menu/cab_conversations.xml @@ -6,6 +6,11 @@ android:icon="@drawable/ic_add_person_vector" android:title="@string/add_number_to_contact" app:showAsAction="ifRoom" /> +