Loading data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt +6 −6 Original line number Diff line number Diff line Loading @@ -50,15 +50,15 @@ class CallControlBlockingClient @Inject constructor( override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address) val blocked = tryOrNull { val blockReason = tryOrNull { context.contentResolver.query(uri, projection, null, null, null) // Query URI ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.any { result -> result.blockReason != null } // Check if any are blocked } == true // If none are blocked or we errored at some point, return false ?.find { result -> result.blockReason != null } // Check if any are blocked }?.blockReason // If none are blocked or we errored at some point, return false when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK when (blockReason) { null -> BlockingClient.Action.Unblock else -> BlockingClient.Action.Block(blockReason) } } Loading data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt +2 −2 Original line number Diff line number Diff line Loading @@ -33,8 +33,8 @@ class QksmsBlockingClient @Inject constructor( override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { when (blockingRepo.isBlocked(address)) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK true -> BlockingClient.Action.Block() false -> BlockingClient.Action.Unblock } } Loading data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt +2 −2 Original line number Diff line number Diff line Loading @@ -59,8 +59,8 @@ class ShouldIAnswerBlockingClient @Inject constructor( return Binder(context, address).isBlocked() .map { blocked -> when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.DO_NOTHING true -> BlockingClient.Action.Block() false -> BlockingClient.Action.DoNothing } } } Loading data/src/main/java/com/moez/QKSMS/migration/QkRealmMigration.kt +10 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ import io.realm.RealmMigration class QkRealmMigration : RealmMigration { companion object { const val SCHEMA_VERSION: Long = 6 const val SCHEMA_VERSION: Long = 7 } override fun migrate(realm: DynamicRealm, oldVersion: Long, newVersion: Long) { Loading Loading @@ -80,6 +80,14 @@ class QkRealmMigration : RealmMigration { version++ } if (version == 6L) { realm.schema.get("Conversation") ?.addField("blockingClient", Integer::class.java) ?.addField("blockReason", String::class.java) version++ } if (version < newVersion) { throw IllegalStateException("Migration missing from v$oldVersion to v$newVersion") } Loading data/src/main/java/com/moez/QKSMS/repository/ConversationRepositoryImpl.kt +13 −4 Original line number Diff line number Diff line Loading @@ -297,14 +297,19 @@ class ConversationRepositoryImpl @Inject constructor( } } override fun markBlocked(vararg threadIds: Long) { override fun markBlocked(threadIds: List<Long>, blockingClient: Int, blockReason: String?) { Realm.getDefaultInstance().use { realm -> val conversations = realm.where(Conversation::class.java) .anyOf("id", threadIds) .anyOf("id", threadIds.toLongArray()) .equalTo("blocked", false) .findAll() realm.executeTransaction { conversations.forEach { it.blocked = true } conversations.forEach { conversation -> conversation.blocked = true conversation.blockingClient = blockingClient conversation.blockReason = blockReason } } } } Loading @@ -316,7 +321,11 @@ class ConversationRepositoryImpl @Inject constructor( .findAll() realm.executeTransaction { conversations.forEach { it.blocked = false } conversations.forEach { conversation -> conversation.blocked = false conversation.blockingClient = null conversation.blockReason = null } } } } Loading Loading
data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt +6 −6 Original line number Diff line number Diff line Loading @@ -50,15 +50,15 @@ class CallControlBlockingClient @Inject constructor( override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address) val blocked = tryOrNull { val blockReason = tryOrNull { context.contentResolver.query(uri, projection, null, null, null) // Query URI ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.any { result -> result.blockReason != null } // Check if any are blocked } == true // If none are blocked or we errored at some point, return false ?.find { result -> result.blockReason != null } // Check if any are blocked }?.blockReason // If none are blocked or we errored at some point, return false when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK when (blockReason) { null -> BlockingClient.Action.Unblock else -> BlockingClient.Action.Block(blockReason) } } Loading
data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt +2 −2 Original line number Diff line number Diff line Loading @@ -33,8 +33,8 @@ class QksmsBlockingClient @Inject constructor( override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { when (blockingRepo.isBlocked(address)) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK true -> BlockingClient.Action.Block() false -> BlockingClient.Action.Unblock } } Loading
data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt +2 −2 Original line number Diff line number Diff line Loading @@ -59,8 +59,8 @@ class ShouldIAnswerBlockingClient @Inject constructor( return Binder(context, address).isBlocked() .map { blocked -> when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.DO_NOTHING true -> BlockingClient.Action.Block() false -> BlockingClient.Action.DoNothing } } } Loading
data/src/main/java/com/moez/QKSMS/migration/QkRealmMigration.kt +10 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ import io.realm.RealmMigration class QkRealmMigration : RealmMigration { companion object { const val SCHEMA_VERSION: Long = 6 const val SCHEMA_VERSION: Long = 7 } override fun migrate(realm: DynamicRealm, oldVersion: Long, newVersion: Long) { Loading Loading @@ -80,6 +80,14 @@ class QkRealmMigration : RealmMigration { version++ } if (version == 6L) { realm.schema.get("Conversation") ?.addField("blockingClient", Integer::class.java) ?.addField("blockReason", String::class.java) version++ } if (version < newVersion) { throw IllegalStateException("Migration missing from v$oldVersion to v$newVersion") } Loading
data/src/main/java/com/moez/QKSMS/repository/ConversationRepositoryImpl.kt +13 −4 Original line number Diff line number Diff line Loading @@ -297,14 +297,19 @@ class ConversationRepositoryImpl @Inject constructor( } } override fun markBlocked(vararg threadIds: Long) { override fun markBlocked(threadIds: List<Long>, blockingClient: Int, blockReason: String?) { Realm.getDefaultInstance().use { realm -> val conversations = realm.where(Conversation::class.java) .anyOf("id", threadIds) .anyOf("id", threadIds.toLongArray()) .equalTo("blocked", false) .findAll() realm.executeTransaction { conversations.forEach { it.blocked = true } conversations.forEach { conversation -> conversation.blocked = true conversation.blockingClient = blockingClient conversation.blockReason = blockReason } } } } Loading @@ -316,7 +321,11 @@ class ConversationRepositoryImpl @Inject constructor( .findAll() realm.executeTransaction { conversations.forEach { it.blocked = false } conversations.forEach { conversation -> conversation.blocked = false conversation.blockingClient = null conversation.blockReason = null } } } } Loading