diff --git a/app/src/main/kotlin/org/fossify/contacts/activities/ViewContactActivity.kt b/app/src/main/kotlin/org/fossify/contacts/activities/ViewContactActivity.kt index 81c70041..45cd236c 100644 --- a/app/src/main/kotlin/org/fossify/contacts/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/org/fossify/contacts/activities/ViewContactActivity.kt @@ -114,7 +114,7 @@ class ViewContactActivity : ContactActivity() { } findItem(R.id.delete).setOnMenuItemClickListener { - deleteContactFromAllSources() + deleteContactWithMergeLogic() true } @@ -838,8 +838,8 @@ class ViewContactActivity : ContactActivity() { } } - private fun deleteContactFromAllSources() { - val addition = if (binding.contactSourcesHolder.childCount > 1) { + private fun deleteContactWithMergeLogic() { + val addition = if (binding.contactSourcesHolder.childCount > 1 && mergeDuplicate) { "\n\n${getString(R.string.delete_from_all_sources)}" } else { "" @@ -848,7 +848,7 @@ class ViewContactActivity : ContactActivity() { val message = "${getString(org.fossify.commons.R.string.proceed_with_deletion)}$addition" ConfirmationDialog(this, message) { if (contact != null) { - ContactsHelper(this).deleteContact(contact!!, true) { + ContactsHelper(this).deleteContact(contact!!, mergeDuplicate) { finish() } } diff --git a/app/src/main/kotlin/org/fossify/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/org/fossify/contacts/adapters/ContactsAdapter.kt index dc30f3e8..794b273d 100644 --- a/app/src/main/kotlin/org/fossify/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/org/fossify/contacts/adapters/ContactsAdapter.kt @@ -224,13 +224,11 @@ class ContactsAdapter( ContactsHelper(activity).getContacts(true) { allContacts -> ensureBackgroundThread { - contactsToRemove.forEach { - val contactToRemove = it - val duplicates = allContacts.filter { it.id != contactToRemove.id && it.getHashToCompare() == contactToRemove.getHashToCompare() } - .toMutableList() as ArrayList - duplicates.add(contactToRemove) - ContactsHelper(activity).deleteContacts(duplicates) - } + ContactsHelper(activity).deleteContacts(contactsToRemove + .flatMap { contactToRemove -> allContacts.filter { + (config.mergeDuplicateContacts || it.id == contactToRemove.id) && (it.getHashToCompare() == contactToRemove.getHashToCompare()) + } } + .toMutableList() as ArrayList) activity.runOnUiThread { if (contactItems.isEmpty()) {