From 591f473a1f2c4e9eaf12e8127bcede2349b67736 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 6 Feb 2022 22:44:20 +0100 Subject: [PATCH] updating commons with PhoneNumber containing multiple fields --- app/build.gradle | 2 +- .../activities/NewConversationActivity.kt | 8 ++--- .../smsmessenger/activities/ThreadActivity.kt | 29 ++++++++++--------- .../adapters/AutoCompleteTextViewAdapter.kt | 2 +- .../smsmessenger/adapters/ContactsAdapter.kt | 2 +- .../smsmessenger/adapters/ThreadAdapter.kt | 2 +- .../smsmessenger/extensions/Context.kt | 16 ++++++---- .../smsmessenger/helpers/ImageCompressor.kt | 3 +- .../smsmessenger/receivers/MmsReceiver.kt | 2 +- .../smsmessenger/receivers/SmsReceiver.kt | 4 ++- 10 files changed, 39 insertions(+), 31 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4ad28df8..4f65272b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ android { } dependencies { - implementation 'com.github.SimpleMobileTools:Simple-Commons:4d36cc84e9' + implementation 'com.github.SimpleMobileTools:Simple-Commons:1539cc92c2' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61' diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt index 85aa8441..f585fa9d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt @@ -64,7 +64,7 @@ class NewConversationActivity : SimpleActivity() { val searchString = it val filteredContacts = ArrayList() allContacts.forEach { - if (it.phoneNumbers.any { it.contains(searchString, true) } || + if (it.phoneNumbers.any { it.normalizedNumber.contains(searchString, true) } || it.name.contains(searchString, true) || it.name.contains(searchString.normalizeString(), true) || it.name.normalizeString().contains(searchString, true)) { @@ -147,14 +147,14 @@ class NewConversationActivity : SimpleActivity() { if (phoneNumbers.size > 1) { val items = ArrayList() phoneNumbers.forEachIndexed { index, phoneNumber -> - items.add(RadioItem(index, phoneNumber, phoneNumber)) + items.add(RadioItem(index, phoneNumber.normalizedNumber, phoneNumber)) } RadioGroupDialog(this, items) { launchThreadActivity(it as String, contact.name) } } else { - launchThreadActivity(phoneNumbers.first(), contact.name) + launchThreadActivity(phoneNumbers.first().normalizedNumber, contact.name) } }.apply { contacts_list.adapter = this @@ -193,7 +193,7 @@ class NewConversationActivity : SimpleActivity() { SimpleContactsHelper(this@NewConversationActivity).loadContactImage(contact.photoUri, suggested_contact_image, contact.name) suggestions_holder.addView(this) setOnClickListener { - launchThreadActivity(contact.phoneNumbers.first(), contact.name) + launchThreadActivity(contact.phoneNumbers.first().normalizedNumber, contact.name) } } } 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 64f9e0d0..ebcbcea0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -37,6 +37,7 @@ import com.klinker.android.send_message.Transaction import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* +import com.simplemobiletools.commons.models.PhoneNumber import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.adapters.AutoCompleteTextViewAdapter @@ -239,7 +240,7 @@ class ThreadActivity : SimpleActivity() { messages = getMessages(threadId) val hasParticipantWithoutName = participants.any { - it.phoneNumbers.contains(it.name) + it.phoneNumbers.map { it.normalizedNumber }.contains(it.name) } try { @@ -256,8 +257,8 @@ class ThreadActivity : SimpleActivity() { if (privateContacts.isNotEmpty()) { val senderNumbersToReplace = HashMap() participants.filter { it.doesHavePhoneNumber(it.name) }.forEach { participant -> - privateContacts.firstOrNull { it.doesHavePhoneNumber(participant.phoneNumbers.first()) }?.apply { - senderNumbersToReplace[participant.phoneNumbers.first()] = name + privateContacts.firstOrNull { it.doesHavePhoneNumber(participant.phoneNumbers.first().normalizedNumber) }?.apply { + senderNumbersToReplace[participant.phoneNumbers.first().normalizedNumber] = name participant.name = name participant.photoUri = photoUri } @@ -279,7 +280,8 @@ class ThreadActivity : SimpleActivity() { return@ensureBackgroundThread } - val contact = SimpleContact(0, 0, name, "", arrayListOf(number), ArrayList(), ArrayList()) + val phoneNumber = PhoneNumber(number, 0, "", number) + val contact = SimpleContact(0, 0, name, "", arrayListOf(phoneNumber), ArrayList(), ArrayList()) participants.add(contact) } @@ -335,7 +337,8 @@ class ThreadActivity : SimpleActivity() { confirm_inserted_number?.setOnClickListener { val number = add_contact_or_number.value - val contact = SimpleContact(number.hashCode(), number.hashCode(), number, "", arrayListOf(number), ArrayList(), ArrayList()) + val phoneNumber = PhoneNumber(number, 0, "", number) + val contact = SimpleContact(number.hashCode(), number.hashCode(), number, "", arrayListOf(phoneNumber), ArrayList(), ArrayList()) addSelectedContact(contact) } } @@ -371,7 +374,7 @@ class ThreadActivity : SimpleActivity() { val numbers = HashSet() participants.forEach { it.phoneNumbers.forEach { - numbers.add(it) + numbers.add(it.normalizedNumber) } } @@ -466,7 +469,7 @@ class ThreadActivity : SimpleActivity() { val numbers = ArrayList() participants.forEach { it.phoneNumbers.forEach { - numbers.add(it) + numbers.add(it.normalizedNumber) } } @@ -498,7 +501,7 @@ class ThreadActivity : SimpleActivity() { val numbers = ArrayList() participants.forEach { it.phoneNumbers.forEach { - numbers.add(it) + numbers.add(it.normalizedNumber) } } @@ -529,7 +532,7 @@ class ThreadActivity : SimpleActivity() { } private fun dialNumber() { - val phoneNumber = participants.first().phoneNumbers.first() + val phoneNumber = participants.first().phoneNumbers.first().normalizedNumber dialNumber(phoneNumber) } @@ -761,7 +764,7 @@ class ThreadActivity : SimpleActivity() { val numbers = ArrayList() participants.forEach { it.phoneNumbers.forEach { - numbers.add(it) + numbers.add(it.normalizedNumber) } } @@ -894,15 +897,15 @@ class ThreadActivity : SimpleActivity() { for (participant in participants) { participant.phoneNumbers = participant.phoneNumbers.map { val numberWithoutPlus = number.replace("+", "") - if (numberWithoutPlus == it.trim()) { - if (participant.name == it) { + if (numberWithoutPlus == it.normalizedNumber.trim()) { + if (participant.name == it.normalizedNumber) { participant.name = number } number } else { it } - } as ArrayList + } as ArrayList } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt index 13199da6..6acdae5f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/AutoCompleteTextViewAdapter.kt @@ -42,7 +42,7 @@ class AutoCompleteTextViewAdapter(val activity: SimpleActivity, val contacts: Ar if (contact != null) { findViewById(R.id.item_contact_name).text = contact.name - findViewById(R.id.item_contact_number).text = contact.phoneNumbers.first() + findViewById(R.id.item_contact_number).text = contact.phoneNumbers.first().normalizedNumber SimpleContactsHelper(context).loadContactImage(contact.photoUri, findViewById(R.id.item_contact_image), contact.name) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt index 33256a89..0cc61087 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt @@ -69,7 +69,7 @@ class ContactsAdapter( } findViewById(R.id.item_contact_number).apply { - text = contact.phoneNumbers.first() + text = contact.phoneNumbers.first().normalizedNumber setTextColor(textColor) setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize) } 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 97134560..fc560136 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -237,7 +237,7 @@ class ThreadAdapter( thread_message_sender_photo.beVisible() thread_message_sender_photo.setOnClickListener { val contact = message.participants.first() - context.getContactFromAddress(contact.phoneNumbers.first()) { + context.getContactFromAddress(contact.phoneNumbers.first().normalizedNumber) { if (it != null) { (activity as ThreadActivity).startContactDetailsIntent(it) } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 8fcc83bb..9c9626a7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -23,6 +23,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.RemoteInput import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* +import com.simplemobiletools.commons.models.PhoneNumber import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.ThreadActivity @@ -99,7 +100,8 @@ fun Context.getMessages(threadId: Long): ArrayList { val thread = cursor.getLongValue(Sms.THREAD_ID) val subscriptionId = cursor.getIntValue(Sms.SUBSCRIPTION_ID) val status = cursor.getIntValue(Sms.STATUS) - val participant = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber), ArrayList(), ArrayList()) + val phoneNumber = PhoneNumber(senderNumber, 0, "", senderNumber) + val participant = SimpleContact(0, 0, senderName, photoUri, arrayListOf(phoneNumber), ArrayList(), ArrayList()) val isMMS = false val message = Message(id, body, type, status, arrayListOf(participant), date, read, thread, isMMS, null, senderName, photoUri, subscriptionId) messages.add(message) @@ -382,10 +384,11 @@ fun Context.getThreadParticipants(threadId: Long, contactsMap: HashMap): Arr return@queryCursor } else if (namePhoto.name == senderNumber) { if (privateContacts.isNotEmpty()) { - val privateContact = privateContacts.firstOrNull { it.phoneNumbers.first() == senderNumber } + val privateContact = privateContacts.firstOrNull { it.phoneNumbers.first().normalizedNumber == senderNumber } if (privateContact != null) { senderName = privateContact.name photoUri = privateContact.photoUri @@ -477,8 +480,9 @@ fun Context.getSuggestedContacts(privateContacts: ArrayList): Arr } } - val contact = SimpleContact(0, 0, senderName, photoUri, arrayListOf(senderNumber), ArrayList(), ArrayList()) - if (!contacts.map { it.phoneNumbers.first().trimToComparableNumber() }.contains(senderNumber.trimToComparableNumber())) { + val phoneNumber = PhoneNumber(senderNumber, 0, "", senderNumber) + val contact = SimpleContact(0, 0, senderName, photoUri, arrayListOf(phoneNumber), ArrayList(), ArrayList()) + if (!contacts.map { it.phoneNumbers.first().normalizedNumber.trimToComparableNumber() }.contains(senderNumber.trimToComparableNumber())) { contacts.add(contact) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/ImageCompressor.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/ImageCompressor.kt index 363c2960..76560e24 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/ImageCompressor.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/ImageCompressor.kt @@ -117,7 +117,7 @@ class ImageCompressor(private val context: Context) { fun isSatisfied(imageFile: File): Boolean { // If size requirement is not met and maxIteration is reached - if(iteration >= maxIteration && imageFile.length() >= maxFileSize) { + if (iteration >= maxIteration && imageFile.length() >= maxFileSize) { throw Exception("Unable to compress image to targeted size") } return imageFile.length() <= maxFileSize @@ -180,5 +180,4 @@ class ImageCompressor(private val context: Context) { } } } - } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index f19a826d..aa307a91 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -14,7 +14,7 @@ import com.simplemobiletools.smsmessenger.extensions.* class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { override fun onMessageReceived(context: Context, messageUri: Uri) { val mms = context.getLatestMMS() ?: return - val address = mms.participants.firstOrNull()?.phoneNumbers?.first() ?: "" + val address = mms.participants.firstOrNull()?.phoneNumbers?.first()?.normalizedNumber ?: "" if (context.isNumberBlocked(address)) { return } 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 4acc7fea..f0b4ba98 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -14,6 +14,7 @@ import com.bumptech.glide.request.RequestOptions import com.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.commons.helpers.SimpleContactsHelper import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import com.simplemobiletools.commons.models.PhoneNumber import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.extensions.* @@ -63,7 +64,8 @@ class SmsReceiver : BroadcastReceiver() { } val senderName = context.getNameFromAddress(address, privateCursor) - val participant = SimpleContact(0, 0, senderName, "", arrayListOf(address), ArrayList(), ArrayList()) + val phoneNumber = PhoneNumber(address, 0, "", address) + val participant = SimpleContact(0, 0, senderName, "", arrayListOf(phoneNumber), ArrayList(), ArrayList()) val participants = arrayListOf(participant) val messageDate = (date / 1000).toInt()