Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56d13dfe authored by moezbhatti's avatar moezbhatti
Browse files

Stricter check for phone number equality

parent c2bcf569
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ dependencies {
    implementation "com.jakewharton.timber:timber:$timber_version"
    implementation "com.squareup.moshi:moshi:$moshi_version"
    implementation "com.squareup.okhttp3:okhttp:$okhttp3_version"
    implementation 'io.michaelrocks:libphonenumber-android:8.10.16'
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
    implementation project(":android-smsmms")
+7 −6
Original line number Diff line number Diff line
@@ -18,16 +18,17 @@
 */
package com.moez.QKSMS.filter

import android.telephony.PhoneNumberUtils
import com.moez.QKSMS.util.PhoneNumberUtils
import javax.inject.Inject

class PhoneNumberFilter @Inject constructor() : Filter<String>() {
class PhoneNumberFilter @Inject constructor(
    private val phoneNumberUtils: PhoneNumberUtils
) : Filter<String>() {

    override fun filter(item: String, query: CharSequence): Boolean {
        val allCharactersDialable = query.all { PhoneNumberUtils.isReallyDialable(it) }

        return allCharactersDialable && (PhoneNumberUtils.compare(item, query.toString()) ||
                PhoneNumberUtils.stripSeparators(item).contains(PhoneNumberUtils.stripSeparators(query.toString())))
        val allCharactersDialable = query.all { phoneNumberUtils.isReallyDialable(it) }
        return allCharactersDialable && (phoneNumberUtils.compare(item, query.toString()) ||
                phoneNumberUtils.normalizeNumber(item).contains(phoneNumberUtils.normalizeNumber(query.toString())))
    }

}
 No newline at end of file
+7 −5
Original line number Diff line number Diff line
@@ -18,20 +18,22 @@
 */
package com.moez.QKSMS.repository

import android.telephony.PhoneNumberUtils
import com.moez.QKSMS.extensions.anyOf
import com.moez.QKSMS.model.BlockedNumber
import com.moez.QKSMS.util.PhoneNumberUtils
import io.realm.Realm
import io.realm.RealmResults
import javax.inject.Inject

class BlockingRepositoryImpl @Inject constructor() : BlockingRepository {
class BlockingRepositoryImpl @Inject constructor(
    private val phoneNumberUtils: PhoneNumberUtils
) : BlockingRepository {

    override fun blockNumber(vararg addresses: String) {
        Realm.getDefaultInstance().use { realm ->
            val blockedNumbers = realm.where(BlockedNumber::class.java).findAll()
            val newAddresses = addresses.filter { address ->
                blockedNumbers.none { number -> PhoneNumberUtils.compare(number.address, address) }
                blockedNumbers.none { number -> phoneNumberUtils.compare(number.address, address) }
            }

            val maxId = realm.where(BlockedNumber::class.java)
@@ -60,7 +62,7 @@ class BlockingRepositoryImpl @Inject constructor() : BlockingRepository {
        return Realm.getDefaultInstance().use { realm ->
            realm.where(BlockedNumber::class.java)
                    .findAll()
                    .any { number -> PhoneNumberUtils.compare(number.address, address) }
                    .any { number -> phoneNumberUtils.compare(number.address, address) }
        }
    }

@@ -80,7 +82,7 @@ class BlockingRepositoryImpl @Inject constructor() : BlockingRepository {
            val ids = realm.where(BlockedNumber::class.java)
                    .findAll()
                    .filter { number ->
                        addresses.any { address -> PhoneNumberUtils.compare(number.address, address) }
                        addresses.any { address -> phoneNumberUtils.compare(number.address, address) }
                    }
                    .map { number -> number.id }
                    .toLongArray()
+5 −4
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ package com.moez.QKSMS.repository
import android.content.ContentUris
import android.content.Context
import android.provider.Telephony
import android.telephony.PhoneNumberUtils
import com.moez.QKSMS.compat.TelephonyCompat
import com.moez.QKSMS.extensions.anyOf
import com.moez.QKSMS.extensions.map
@@ -34,6 +33,7 @@ import com.moez.QKSMS.model.Conversation
import com.moez.QKSMS.model.Message
import com.moez.QKSMS.model.Recipient
import com.moez.QKSMS.model.SearchResult
import com.moez.QKSMS.util.PhoneNumberUtils
import com.moez.QKSMS.util.tryOrNull
import io.realm.Case
import io.realm.Realm
@@ -46,7 +46,8 @@ class ConversationRepositoryImpl @Inject constructor(
    private val context: Context,
    private val conversationFilter: ConversationFilter,
    private val cursorToConversation: CursorToConversation,
    private val cursorToRecipient: CursorToRecipient
    private val cursorToRecipient: CursorToRecipient,
    private val phoneNumberUtils: PhoneNumberUtils
) : ConversationRepository {

    override fun getConversations(archived: Boolean): RealmResults<Conversation> {
@@ -179,7 +180,7 @@ class ConversationRepositoryImpl @Inject constructor(
                    .findAll()
                    .firstOrNull { conversation ->
                        conversation.recipients.size == recipients.size && conversation.recipients.map { it.address }.all { address ->
                            recipients.any { recipient -> PhoneNumberUtils.compare(recipient, address) }
                            recipients.any { recipient -> phoneNumberUtils.compare(recipient, address) }
                        }
                    }
                    ?.id
@@ -363,7 +364,7 @@ class ConversationRepositoryImpl @Inject constructor(
                            .map { recipient ->
                                recipient.apply {
                                    contact = contacts.firstOrNull {
                                        it.numbers.any { PhoneNumberUtils.compare(recipient.address, it.address) }
                                        it.numbers.any { phoneNumberUtils.compare(recipient.address, it.address) }
                                    }
                                }
                            }
+4 −3
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import android.content.Intent
import android.content.IntentFilter
import android.os.Build
import android.provider.Telephony
import android.telephony.PhoneNumberUtils
import android.telephony.SmsManager
import androidx.core.content.contentValuesOf
import com.google.android.mms.ContentType
@@ -47,6 +46,7 @@ import com.moez.QKSMS.receiver.SendSmsReceiver
import com.moez.QKSMS.receiver.SmsDeliveredReceiver
import com.moez.QKSMS.receiver.SmsSentReceiver
import com.moez.QKSMS.util.ImageUtils
import com.moez.QKSMS.util.PhoneNumberUtils
import com.moez.QKSMS.util.Preferences
import com.moez.QKSMS.util.tryOrNull
import io.realm.Case
@@ -61,8 +61,9 @@ import javax.inject.Singleton
class MessageRepositoryImpl @Inject constructor(
    private val activeConversationManager: ActiveConversationManager,
    private val context: Context,
    private val messageIds: KeyManager,
    private val imageRepository: ImageRepository,
    private val messageIds: KeyManager,
    private val phoneNumberUtils: PhoneNumberUtils,
    private val prefs: Preferences,
    private val syncRepository: SyncRepository
) : MessageRepository {
@@ -290,7 +291,7 @@ class MessageRepositoryImpl @Inject constructor(
                    .map { vCard -> MMSPart("contact", ContentType.TEXT_VCARD, vCard) }

            val transaction = Transaction(context)
            transaction.sendNewMessage(subId, threadId, addresses.map(PhoneNumberUtils::stripSeparators), parts, null)
            transaction.sendNewMessage(subId, threadId, addresses.map(phoneNumberUtils::normalizeNumber), parts, null)
        }
    }

Loading