From f537b78aa2be65031994f56e3cca77572e7f0360 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 27 Oct 2020 15:53:54 +0100 Subject: [PATCH] show Signal actions too --- .../pro/activities/ViewContactActivity.kt | 30 +++++++++++++++++-- .../contacts/pro/extensions/Context.kt | 30 +++++++++++++++++++ .../contacts/pro/helpers/Constants.kt | 1 + 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt index 592be336..3b7e5ce8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt @@ -541,7 +541,15 @@ class ViewContactActivity : ContactActivity() { contact_source_image.setImageDrawable(getPackageDrawable(WHATSAPP_PACKAGE)) contact_source_image.beVisible() contact_source_image.setOnClickListener { - showWhatsAppActions() + showWhatsAppActions(key.id) + } + } + + if (value.toLowerCase() == SIGNAL) { + contact_source_image.setImageDrawable(getPackageDrawable(SIGNAL_PACKAGE)) + contact_source_image.beVisible() + contact_source_image.setOnClickListener { + showSignalActions(key.id) } } } @@ -589,9 +597,25 @@ class ViewContactActivity : ContactActivity() { } } - private fun showWhatsAppActions() { + private fun showWhatsAppActions(contactId: Int) { ensureBackgroundThread { - val actions = getWhatsAppActions(contact!!.id) + val actions = getWhatsAppActions(contactId) + runOnUiThread { + ChooseSocialDialog(this@ViewContactActivity, actions) { action -> + Intent(Intent.ACTION_VIEW).apply { + val uri = ContentUris.withAppendedId(ContactsContract.Data.CONTENT_URI, action.dataId) + setDataAndType(uri, action.mimetype) + flags = Intent.FLAG_ACTIVITY_CLEAR_TASK + startActivity(this) + } + } + } + } + } + + private fun showSignalActions(contactId: Int) { + ensureBackgroundThread { + val actions = getSignalActions(contactId) runOnUiThread { ChooseSocialDialog(this@ViewContactActivity, actions) { action -> Intent(Intent.ACTION_VIEW).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 23b4c23c..d38532e6 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 @@ -354,6 +354,36 @@ fun Context.getWhatsAppActions(id: Int): ArrayList { return socialActions } +fun Context.getSignalActions(id: Int): ArrayList { + val uri = ContactsContract.Data.CONTENT_URI + val projection = arrayOf( + ContactsContract.Data._ID, + ContactsContract.Data.DATA3, + ContactsContract.Data.MIMETYPE, + ContactsContract.Data.ACCOUNT_TYPE_AND_DATA_SET + ) + + val socialActions = ArrayList() + var curActionId = 0 + val selection = "${ContactsContract.Data.RAW_CONTACT_ID} = ?" + val selectionArgs = arrayOf(id.toString()) + queryCursor(uri, projection, selection, selectionArgs, null, true) { cursor -> + val mimetype = cursor.getStringValue(ContactsContract.Data.MIMETYPE) + val type = when (mimetype) { + "vnd.android.cursor.item/vnd.org.thoughtcrime.securesms.contact" -> SOCIAL_MESSAGE + "vnd.android.cursor.item/vnd.org.thoughtcrime.securesms.call" -> SOCIAL_VOICE_CALL + else -> return@queryCursor + } + + val label = cursor.getStringValue(ContactsContract.Data.DATA3) + val realID = cursor.getLongValue(ContactsContract.Data._ID) + val packageName = cursor.getStringValue(ContactsContract.Data.ACCOUNT_TYPE_AND_DATA_SET) + val socialAction = SocialAction(curActionId++, type, label, mimetype, realID, packageName) + socialActions.add(socialAction) + } + return socialActions +} + fun Context.getPackageDrawable(packageName: String): Drawable? { var drawable: Drawable? = null try { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt index 174b5465..a2a076a8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt @@ -108,6 +108,7 @@ const val SIGNAL_PACKAGE = "org.thoughtcrime.securesms" const val WHATSAPP_PACKAGE = "com.whatsapp" const val WHATSAPP = "whatsapp" +const val SIGNAL = "signal" const val SOCIAL_VOICE_CALL = 0 const val SOCIAL_VIDEO_CALL = 1