Add ability to check blacklist in spite of blacklist schedule

This commit is contained in:
Moez Bhatti
2021-02-10 21:27:06 -05:00
parent 178cccd93f
commit 2bcb05945b
11 changed files with 45 additions and 15 deletions
@@ -30,7 +30,9 @@ class BlockingManager @Inject constructor(
override fun getClientCapability(): BlockingClient.Capability = client.getClientCapability()
override fun getAction(address: String): Single<BlockingClient.Action> = client.getAction(address)
override fun shouldBlock(address: String): Single<BlockingClient.Action> = client.shouldBlock(address)
override fun isBlacklisted(address: String): Single<BlockingClient.Action> = client.isBlacklisted(address)
override fun block(addresses: List<String>): Completable = client.block(addresses)
@@ -43,11 +43,24 @@ class CallBlockerBlockingClient @Inject constructor(
override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION
override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable {
override fun shouldBlock(address: String): Single<BlockingClient.Action> = Single.fromCallable {
val uri = Uri.parse("content://com.cuiet.blockCalls.ContProvBlockCalls/lookup/is.blocked.lookup")
val blockReason = tryOrNull {
context.contentResolver.query(uri, arrayOf("result"), "incomingNumber",
arrayOf(address), null)
context.contentResolver.query(uri, arrayOf("result"), "incomingNumber", arrayOf(address), null)
?.use { cursor -> cursor.map(::LookupResult) }
?.find { result -> result.blockReason != null }
}?.blockReason
when (blockReason) {
"true" -> BlockingClient.Action.Block()
else -> BlockingClient.Action.Unblock
}
}
override fun isBlacklisted(address: String): Single<BlockingClient.Action> = Single.fromCallable {
val uri = Uri.parse("content://com.cuiet.blockCalls.ContProvBlockCalls/lookup/is.blocked.lookup")
val blockReason = tryOrNull {
context.contentResolver.query(uri, arrayOf("result"), "blacklistLookup", arrayOf(address), null)
?.use { cursor -> cursor.map(::LookupResult) }
?.find { result -> result.blockReason != null }
}?.blockReason
@@ -48,7 +48,9 @@ class CallControlBlockingClient @Inject constructor(
override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION
override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable {
override fun shouldBlock(address: String): Single<BlockingClient.Action> = isBlacklisted(address)
override fun isBlacklisted(address: String): Single<BlockingClient.Action> = Single.fromCallable {
val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address)
val blockReason = tryOrNull {
context.contentResolver.query(uri, projection, null, null, null) // Query URI
@@ -31,7 +31,9 @@ class QksmsBlockingClient @Inject constructor(
override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITHOUT_PERMISSION
override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable {
override fun shouldBlock(address: String): Single<BlockingClient.Action> = isBlacklisted(address)
override fun isBlacklisted(address: String): Single<BlockingClient.Action> = Single.fromCallable {
when (blockingRepo.isBlocked(address)) {
true -> BlockingClient.Action.Block()
false -> BlockingClient.Action.Unblock
@@ -55,7 +55,9 @@ class ShouldIAnswerBlockingClient @Inject constructor(
override fun getClientCapability() = BlockingClient.Capability.CANT_BLOCK
override fun getAction(address: String): Single<BlockingClient.Action> {
override fun shouldBlock(address: String): Single<BlockingClient.Action> = isBlacklisted(address)
override fun isBlacklisted(address: String): Single<BlockingClient.Action> {
return Binder(context, address).isBlocked()
.map { blocked ->
when (blocked) {