diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ConversationDetailsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ConversationDetailsActivity.kt index 34636857..39aab30a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ConversationDetailsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ConversationDetailsActivity.kt @@ -1,24 +1,18 @@ package com.simplemobiletools.smsmessenger.activities -import android.net.Uri import android.os.Bundle -import android.provider.ContactsContract import androidx.core.content.res.ResourcesCompat import com.simplemobiletools.commons.extensions.adjustAlpha import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.getProperTextColor -import com.simplemobiletools.commons.extensions.launchViewContactIntent import com.simplemobiletools.commons.helpers.HIGHER_ALPHA import com.simplemobiletools.commons.helpers.NavigationIcon -import com.simplemobiletools.commons.helpers.SimpleContactsHelper import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.adapters.ContactsAdapter import com.simplemobiletools.smsmessenger.dialogs.RenameConversationDialog -import com.simplemobiletools.smsmessenger.extensions.conversationsDB -import com.simplemobiletools.smsmessenger.extensions.getThreadParticipants -import com.simplemobiletools.smsmessenger.extensions.renameConversation +import com.simplemobiletools.smsmessenger.extensions.* import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.models.Conversation import kotlinx.android.synthetic.main.activity_conversation_details.* @@ -77,10 +71,11 @@ class ConversationDetailsActivity : SimpleActivity() { private fun setupParticipants() { val adapter = ContactsAdapter(this, participants, participants_recyclerview) { val contact = it as SimpleContact - val lookupKey = SimpleContactsHelper(this).getContactLookupKey(contact.rawId.toString()) - val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) - runOnUiThread { - launchViewContactIntent(publicUri) + val address = contact.phoneNumbers.first().normalizedNumber + getContactFromAddress(address) { simpleContact -> + if (simpleContact != null) { + startContactDetailsIntent(simpleContact) + } } } participants_recyclerview.adapter = adapter diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 4233f891..11de779e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -1286,31 +1286,6 @@ class ThreadActivity : SimpleActivity() { return participants } - fun startContactDetailsIntent(contact: SimpleContact) { - val simpleContacts = "com.simplemobiletools.contacts.pro" - val simpleContactsDebug = "com.simplemobiletools.contacts.pro.debug" - if (contact.rawId > 1000000 && contact.contactId > 1000000 && contact.rawId == contact.contactId && - (isPackageInstalled(simpleContacts) || isPackageInstalled(simpleContactsDebug)) - ) { - Intent().apply { - action = Intent.ACTION_VIEW - putExtra(CONTACT_ID, contact.rawId) - putExtra(IS_PRIVATE, true) - setPackage(if (isPackageInstalled(simpleContacts)) simpleContacts else simpleContactsDebug) - setDataAndType(ContactsContract.Contacts.CONTENT_LOOKUP_URI, "vnd.android.cursor.dir/person") - launchActivityIntent(this) - } - } else { - ensureBackgroundThread { - val lookupKey = SimpleContactsHelper(this).getContactLookupKey((contact).rawId.toString()) - val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) - runOnUiThread { - launchViewContactIntent(publicUri) - } - } - } - } - fun saveMMS(mimeType: String, path: String) { hideKeyboard() lastAttachmentUri = path diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 0fa9e199..92cd84ed 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -283,7 +283,7 @@ class ThreadAdapter( val contact = message.participants.first() context.getContactFromAddress(contact.phoneNumbers.first().normalizedNumber) { if (it != null) { - (activity as ThreadActivity).startContactDetailsIntent(it) + activity.startContactDetailsIntent(it) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Activity.kt index 8bbd408c..f4c7774a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Activity.kt @@ -4,10 +4,13 @@ import android.app.Activity import android.content.ActivityNotFoundException import android.content.Intent import android.net.Uri -import com.simplemobiletools.commons.extensions.getMimeType -import com.simplemobiletools.commons.extensions.hideKeyboard -import com.simplemobiletools.commons.extensions.showErrorToast -import com.simplemobiletools.commons.extensions.toast +import android.provider.ContactsContract +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.CONTACT_ID +import com.simplemobiletools.commons.helpers.IS_PRIVATE +import com.simplemobiletools.commons.helpers.SimpleContactsHelper +import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.smsmessenger.R import java.util.* @@ -48,3 +51,28 @@ fun Activity.launchViewIntent(uri: Uri, mimetype: String, filename: String) { } } } + +fun Activity.startContactDetailsIntent(contact: SimpleContact) { + val simpleContacts = "com.simplemobiletools.contacts.pro" + val simpleContactsDebug = "com.simplemobiletools.contacts.pro.debug" + if (contact.rawId > 1000000 && contact.contactId > 1000000 && contact.rawId == contact.contactId && + (isPackageInstalled(simpleContacts) || isPackageInstalled(simpleContactsDebug)) + ) { + Intent().apply { + action = Intent.ACTION_VIEW + putExtra(CONTACT_ID, contact.rawId) + putExtra(IS_PRIVATE, true) + setPackage(if (isPackageInstalled(simpleContacts)) simpleContacts else simpleContactsDebug) + setDataAndType(ContactsContract.Contacts.CONTENT_LOOKUP_URI, "vnd.android.cursor.dir/person") + launchActivityIntent(this) + } + } else { + ensureBackgroundThread { + val lookupKey = SimpleContactsHelper(this).getContactLookupKey((contact).rawId.toString()) + val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) + runOnUiThread { + launchViewContactIntent(publicUri) + } + } + } +}