From 899971aa2a7cbeb1e40890e43b002794b32f735e Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 25 Aug 2019 22:15:54 +0200 Subject: [PATCH] improve deleting multiple contacts at once --- app/build.gradle | 2 +- .../contacts/pro/adapters/ContactsAdapter.kt | 16 +++++++++------- .../contacts/pro/helpers/ContactsHelper.kt | 2 +- .../contacts/pro/helpers/LocalContactsHelper.kt | 7 ++++--- .../contacts/pro/interfaces/ContactsDao.kt | 3 +++ 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1662c466..bfcdd1bf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,7 +51,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.16.14' + implementation 'com.simplemobiletools:commons:5.16.16' implementation 'joda-time:joda-time:2.10.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.5' diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt index 1c82ee22..02199b49 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt @@ -167,14 +167,16 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList) { - val localContacts = contacts.filter { it.isPrivate() }.map { it.id }.toTypedArray() + val localContacts = contacts.filter { it.isPrivate() }.map { it.id.toLong() }.toMutableList() LocalContactsHelper(context).deleteContactIds(localContacts) try { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt index b67b2405..ef0d4daf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt @@ -5,6 +5,7 @@ import android.graphics.Bitmap import android.graphics.BitmapFactory import android.net.Uri import android.provider.MediaStore +import com.simplemobiletools.commons.extensions.getChoppedList import com.simplemobiletools.contacts.pro.extensions.contactsDB import com.simplemobiletools.contacts.pro.extensions.getByteArray import com.simplemobiletools.contacts.pro.extensions.getEmptyContact @@ -45,9 +46,9 @@ class LocalContactsHelper(val context: Context) { } } - fun deleteContactIds(ids: Array) { - ids.forEach { - context.contactsDB.deleteContactId(it) + fun deleteContactIds(ids: MutableList) { + ids.getChoppedList().forEach { + context.contactsDB.deleteContactIds(it) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/ContactsDao.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/ContactsDao.kt index 373df2d3..cc869362 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/ContactsDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/ContactsDao.kt @@ -22,4 +22,7 @@ interface ContactsDao { @Query("DELETE FROM contacts WHERE id = :id") fun deleteContactId(id: Int) + + @Query("DELETE FROM contacts WHERE id IN (:ids)") + fun deleteContactIds(ids: List) }