From 228986a1b42eed0fa1b09222f2793fee2bddecad Mon Sep 17 00:00:00 2001 From: moezbhatti Date: Sun, 15 Sep 2019 21:11:04 -0400 Subject: [PATCH] Speed up filtering for new blocked numbers --- .../QKSMS/repository/BlockingRepositoryImpl.kt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/data/src/main/java/com/moez/QKSMS/repository/BlockingRepositoryImpl.kt b/data/src/main/java/com/moez/QKSMS/repository/BlockingRepositoryImpl.kt index af4187f7..8847d49e 100644 --- a/data/src/main/java/com/moez/QKSMS/repository/BlockingRepositoryImpl.kt +++ b/data/src/main/java/com/moez/QKSMS/repository/BlockingRepositoryImpl.kt @@ -28,9 +28,12 @@ import javax.inject.Inject class BlockingRepositoryImpl @Inject constructor() : BlockingRepository { override fun blockNumber(vararg addresses: String) { - val newAddresses = addresses.filter { address -> !isBlocked(address) } - 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) } + } + val maxId = realm.where(BlockedNumber::class.java) .max("id")?.toLong() ?: -1 @@ -41,14 +44,14 @@ class BlockingRepositoryImpl @Inject constructor() : BlockingRepository { } override fun getBlockedNumbers(): RealmResults { - val realm = Realm.getDefaultInstance() - return realm.where(BlockedNumber::class.java) + return Realm.getDefaultInstance() + .where(BlockedNumber::class.java) .findAllAsync() } override fun getBlockedNumber(id: Long): BlockedNumber? { - val realm = Realm.getDefaultInstance() - return realm.where(BlockedNumber::class.java) + return Realm.getDefaultInstance() + .where(BlockedNumber::class.java) .equalTo("id", id) .findFirst() }