Merge pull request #688 from fatihergin/feature/implement-contact-blocking

Feature/implement contact blocking
This commit is contained in:
Tibor Kaputa 2023-09-11 23:07:29 +02:00 committed by GitHub
commit 1c80b662ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 76 additions and 1 deletions

View File

@ -94,6 +94,10 @@ class ContactsAdapter(
findItem(R.id.cab_create_shortcut).title = activity.addLockedLabelIfNeeded(R.string.create_shortcut)
findItem(R.id.cab_create_shortcut).isVisible = isOneItemSelected && isOreoPlus()
findItem(R.id.cab_view_details).isVisible = isOneItemSelected
findItem(R.id.cab_block_unblock_contact).isVisible = isOneItemSelected && isNougatPlus()
getCabBlockContactTitle { title ->
findItem(R.id.cab_block_unblock_contact).title = title
}
}
}
@ -103,6 +107,7 @@ class ContactsAdapter(
}
when (id) {
R.id.cab_block_unblock_contact -> tryBlockingUnblocking()
R.id.cab_call_sim_1 -> callContact(true)
R.id.cab_call_sim_2 -> callContact(false)
R.id.cab_remove_default_sim -> removeDefaultSIM()
@ -150,6 +155,71 @@ class ContactsAdapter(
override fun getItemCount() = contacts.size
private fun getCabBlockContactTitle(callback: (String) -> Unit) {
val contact = getSelectedItems().firstOrNull() ?: return callback("")
activity.isContactBlocked(contact) { blocked ->
val cabItemTitleRes = if (blocked) {
R.string.unblock_contact
} else {
R.string.block_contact
}
callback(activity.addLockedLabelIfNeeded(cabItemTitleRes))
}
}
private fun tryBlockingUnblocking() {
val contact = getSelectedItems().firstOrNull() ?: return
if (activity.isOrWasThankYouInstalled()) {
activity.isContactBlocked(contact) { blocked ->
if (blocked) {
tryUnblocking(contact)
} else {
tryBlocking(contact)
}
}
} else {
FeatureLockedDialog(activity) { }
}
}
private fun tryBlocking(contact: Contact) {
askConfirmBlock(contact) { contactBlocked ->
val resultMsg = if (contactBlocked) {
R.string.block_contact_success
} else {
R.string.block_contact_fail
}
activity.toast(resultMsg)
finishActMode()
}
}
private fun tryUnblocking(contact: Contact) {
val contactUnblocked = activity.unblockContact(contact)
val resultMsg = if (contactUnblocked) {
R.string.unblock_contact_success
} else {
R.string.unblock_contact_fail
}
activity.toast(resultMsg)
finishActMode()
}
private fun askConfirmBlock(contact: Contact, callback: (Boolean) -> Unit) {
val baseString = R.string.block_confirmation
val question = String.format(resources.getString(baseString), contact.name)
ConfirmationDialog(activity, question) {
val contactBlocked = activity.blockContact(contact)
callback(contactBlocked)
}
}
fun updateItems(newItems: List<Contact>, highlightText: String = "") {
if (newItems.hashCode() != contacts.hashCode()) {
contacts = ArrayList(newItems)

View File

@ -31,6 +31,11 @@
android:showAsAction="always"
android:title="@string/send_sms"
app:showAsAction="always" />
<item
android:id="@+id/cab_block_unblock_contact"
android:icon="@drawable/ic_minus_circle_vector"
android:title="@string/block_contact"
app:showAsAction="ifRoom" />
<item
android:id="@+id/cab_create_shortcut"
android:showAsAction="never"

View File

@ -3,7 +3,7 @@
kotlin = "1.9.0"
kotlinxSerializationJson = "1.5.1"
#Simple tools
simple-commons = "73d78e5cd3"
simple-commons = "e0db4c5f28"
#Gradle
gradlePlugins-agp = "8.1.0"
#Other