mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-03-15 02:40:18 +01:00
Merge pull request #688 from fatihergin/feature/implement-contact-blocking
Feature/implement contact blocking
This commit is contained in:
commit
1c80b662ec
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user