From a8c3dcf23a3db3e64351b7fdfc1ad2eb8b2be1b5 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 30 Nov 2018 17:18:51 +0100 Subject: [PATCH] properly handle generating contact uri for local contacts --- .../contacts/pro/activities/EditContactActivity.kt | 6 +++++- .../pro/activities/InsertOrEditContactActivity.kt | 9 ++++----- .../simplemobiletools/contacts/pro/extensions/Context.kt | 6 +++++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt index df213ace..5be562b6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt @@ -128,7 +128,11 @@ class EditContactActivity : ContactActivity() { val data = intent.data if (data != null) { val rawId = if (data.path.contains("lookup")) { - getLookupUriRawId(data) + if (data.pathSegments.last().startsWith("local_")) { + data.path.substringAfter("local_").toInt() + } else { + getLookupUriRawId(data) + } } else { getContactUriRawId(data) } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt index 1fbcf274..c933ed30 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt @@ -13,10 +13,7 @@ import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.adapters.ContactsAdapter import com.simplemobiletools.contacts.pro.extensions.config import com.simplemobiletools.contacts.pro.extensions.getContactPublicUri -import com.simplemobiletools.contacts.pro.helpers.ADD_NEW_CONTACT_NUMBER -import com.simplemobiletools.contacts.pro.helpers.ContactsHelper -import com.simplemobiletools.contacts.pro.helpers.KEY_PHONE -import com.simplemobiletools.contacts.pro.helpers.LOCATION_INSERT_OR_EDIT +import com.simplemobiletools.contacts.pro.helpers.* import com.simplemobiletools.contacts.pro.models.Contact import kotlinx.android.synthetic.main.activity_insert_edit_contact.* @@ -59,10 +56,12 @@ class InsertOrEditContactActivity : SimpleActivity() { private fun gotContacts(contacts: ArrayList) { ContactsAdapter(this, contacts, null, LOCATION_INSERT_OR_EDIT, null, existing_contact_list, existing_contact_fastscroller) { + val contact = it as Contact Intent(applicationContext, EditContactActivity::class.java).apply { - data = getContactPublicUri(it as Contact) + data = getContactPublicUri(contact) action = ADD_NEW_CONTACT_NUMBER putExtra(KEY_PHONE, getPhoneNumberFromIntent(intent)) + putExtra(IS_PRIVATE, contact.source == SMT_PRIVATE) startActivityForResult(this, START_EDIT_ACTIVITY) } }.apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt index 68f7e912..69bb28df 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt @@ -278,7 +278,11 @@ fun Context.removeContactsFromGroup(contacts: ArrayList, groupId: Long) } fun Context.getContactPublicUri(contact: Contact): Uri { - val lookupKey = ContactsHelper(this).getContactLookupKey(contact.id.toString()) + val lookupKey = if (contact.source == SMT_PRIVATE) { + "local_${contact.id}" + } else { + ContactsHelper(this).getContactLookupKey(contact.id.toString()) + } return Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) }