Loading data/src/main/java/com/moez/QKSMS/blocking/CallBlockerBlockingClient.kt +15 −21 Original line number Diff line number Diff line Loading @@ -25,10 +25,10 @@ import android.net.Uri import androidx.core.database.getStringOrNull import com.moez.QKSMS.common.util.extensions.isInstalled import com.moez.QKSMS.extensions.map import com.moez.QKSMS.util.tryOrNull import io.reactivex.Completable import io.reactivex.Single import java.util.ArrayList import timber.log.Timber import java.util.* import javax.inject.Inject class CallBlockerBlockingClient @Inject constructor( Loading @@ -43,32 +43,26 @@ class CallBlockerBlockingClient @Inject constructor( override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION 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) ?.use { cursor -> cursor.map(::LookupResult) } ?.find { result -> result.blockReason != null } }?.blockReason override fun shouldBlock(address: String): Single<BlockingClient.Action> = lookup(address, "incomingNumber") when (blockReason) { "true" -> BlockingClient.Action.Block() else -> BlockingClient.Action.Unblock } } override fun isBlacklisted(address: String): Single<BlockingClient.Action> = lookup(address, "blacklistLookup") override fun isBlacklisted(address: String): Single<BlockingClient.Action> = Single.fromCallable { private fun lookup(address: String, reason: 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) return@fromCallable try { val blockReason = context.contentResolver.query(uri, arrayOf("result"), reason, arrayOf(address), null) ?.use { cursor -> cursor.map(::LookupResult) } ?.find { result -> result.blockReason != null } }?.blockReason ?.blockReason when (blockReason) { "true" -> BlockingClient.Action.Block() else -> BlockingClient.Action.Unblock } } catch (e: Exception) { Timber.w(e) BlockingClient.Action.DoNothing } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { Loading data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt +11 −7 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ import androidx.core.database.getStringOrNull import com.callcontrol.datashare.CallControl import com.moez.QKSMS.common.util.extensions.isInstalled import com.moez.QKSMS.extensions.map import com.moez.QKSMS.util.tryOrNull import io.reactivex.Completable import io.reactivex.Single import timber.log.Timber import javax.inject.Inject class CallControlBlockingClient @Inject constructor( Loading @@ -52,16 +52,20 @@ class CallControlBlockingClient @Inject constructor( 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 return@fromCallable try { val blockReason = context.contentResolver.query(uri, projection, null, null, null) // Query URI ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.find { result -> result.blockReason != null } // Check if any are blocked }?.blockReason // If none are blocked or we errored at some point, return false ?.blockReason // If none are blocked or we errored at some point, return false when (blockReason) { null -> BlockingClient.Action.Unblock else -> BlockingClient.Action.Block(blockReason) } } catch (e: Exception) { Timber.w(e) BlockingClient.Action.DoNothing } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { Loading Loading
data/src/main/java/com/moez/QKSMS/blocking/CallBlockerBlockingClient.kt +15 −21 Original line number Diff line number Diff line Loading @@ -25,10 +25,10 @@ import android.net.Uri import androidx.core.database.getStringOrNull import com.moez.QKSMS.common.util.extensions.isInstalled import com.moez.QKSMS.extensions.map import com.moez.QKSMS.util.tryOrNull import io.reactivex.Completable import io.reactivex.Single import java.util.ArrayList import timber.log.Timber import java.util.* import javax.inject.Inject class CallBlockerBlockingClient @Inject constructor( Loading @@ -43,32 +43,26 @@ class CallBlockerBlockingClient @Inject constructor( override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION 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) ?.use { cursor -> cursor.map(::LookupResult) } ?.find { result -> result.blockReason != null } }?.blockReason override fun shouldBlock(address: String): Single<BlockingClient.Action> = lookup(address, "incomingNumber") when (blockReason) { "true" -> BlockingClient.Action.Block() else -> BlockingClient.Action.Unblock } } override fun isBlacklisted(address: String): Single<BlockingClient.Action> = lookup(address, "blacklistLookup") override fun isBlacklisted(address: String): Single<BlockingClient.Action> = Single.fromCallable { private fun lookup(address: String, reason: 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) return@fromCallable try { val blockReason = context.contentResolver.query(uri, arrayOf("result"), reason, arrayOf(address), null) ?.use { cursor -> cursor.map(::LookupResult) } ?.find { result -> result.blockReason != null } }?.blockReason ?.blockReason when (blockReason) { "true" -> BlockingClient.Action.Block() else -> BlockingClient.Action.Unblock } } catch (e: Exception) { Timber.w(e) BlockingClient.Action.DoNothing } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { Loading
data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt +11 −7 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ import androidx.core.database.getStringOrNull import com.callcontrol.datashare.CallControl import com.moez.QKSMS.common.util.extensions.isInstalled import com.moez.QKSMS.extensions.map import com.moez.QKSMS.util.tryOrNull import io.reactivex.Completable import io.reactivex.Single import timber.log.Timber import javax.inject.Inject class CallControlBlockingClient @Inject constructor( Loading @@ -52,16 +52,20 @@ class CallControlBlockingClient @Inject constructor( 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 return@fromCallable try { val blockReason = context.contentResolver.query(uri, projection, null, null, null) // Query URI ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.find { result -> result.blockReason != null } // Check if any are blocked }?.blockReason // If none are blocked or we errored at some point, return false ?.blockReason // If none are blocked or we errored at some point, return false when (blockReason) { null -> BlockingClient.Action.Unblock else -> BlockingClient.Action.Block(blockReason) } } catch (e: Exception) { Timber.w(e) BlockingClient.Action.DoNothing } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { Loading