From aa495b4251f37cda92979a739da5f2c3e543e9bd Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 25 Mar 2022 21:07:54 +0100 Subject: [PATCH] allow storing unstored numbers from the conversation screen too --- .../smsmessenger/activities/ThreadActivity.kt | 18 +++++++++++++++++- .../smsmessenger/receivers/SmsReceiver.kt | 2 +- app/src/main/res/menu/menu_thread.xml | 4 ++++ 3 files changed, 22 insertions(+), 2 deletions(-) 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 0e161760..7f118849 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -9,7 +9,6 @@ import android.graphics.drawable.LayerDrawable import android.media.MediaMetadataRetriever import android.net.Uri import android.os.Bundle -import android.os.Handler import android.provider.ContactsContract import android.provider.Telephony import android.telephony.SmsMessage @@ -146,10 +145,16 @@ class ThreadActivity : SimpleActivity() { override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_thread, menu) + val firstPhoneNumber = participants.firstOrNull()?.phoneNumbers?.firstOrNull()?.value menu.apply { findItem(R.id.delete).isVisible = threadItems.isNotEmpty() findItem(R.id.block_number).isVisible = isNougatPlus() findItem(R.id.dial_number).isVisible = participants.size == 1 + + // allow saving number in cases when we dont have it stored yet and it is a casual readable number + findItem(R.id.add_number_to_contact).isVisible = participants.size == 1 && participants.first().name == firstPhoneNumber && firstPhoneNumber.any { + it.isDigit() + } } updateMenuItemColors(menu) @@ -164,6 +169,7 @@ class ThreadActivity : SimpleActivity() { when (item.itemId) { R.id.block_number -> blockNumber() R.id.delete -> askConfirmDelete() + R.id.add_number_to_contact -> addNumberToContact() R.id.dial_number -> dialNumber() R.id.manage_people -> managePeople() R.id.mark_as_unread -> markAsUnread() @@ -597,6 +603,16 @@ class ThreadActivity : SimpleActivity() { } } + private fun addNumberToContact() { + val phoneNumber = participants.firstOrNull()?.phoneNumbers?.firstOrNull()?.normalizedNumber ?: return + Intent().apply { + action = Intent.ACTION_INSERT_OR_EDIT + type = "vnd.android.cursor.item/contact" + putExtra(KEY_PHONE, phoneNumber) + launchActivityIntent(this) + } + } + @SuppressLint("MissingPermission") private fun getThreadItems(): ArrayList { val items = ArrayList() diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt index c4cc4756..17f26eb1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -7,10 +7,10 @@ import android.graphics.Bitmap import android.os.Handler import android.os.Looper import android.provider.Telephony -import com.simplemobiletools.commons.extensions.getMyContactsCursor import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.request.RequestOptions +import com.simplemobiletools.commons.extensions.getMyContactsCursor import com.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.commons.helpers.SimpleContactsHelper import com.simplemobiletools.commons.helpers.ensureBackgroundThread diff --git a/app/src/main/res/menu/menu_thread.xml b/app/src/main/res/menu/menu_thread.xml index bea07af0..646593ae 100644 --- a/app/src/main/res/menu/menu_thread.xml +++ b/app/src/main/res/menu/menu_thread.xml @@ -11,6 +11,10 @@ android:icon="@drawable/ic_phone_vector" android:title="@string/dial_number" app:showAsAction="ifRoom" /> +