Loading data/src/main/java/com/moez/QKSMS/blocking/BlockingManager.kt +2 −2 Original line number Original line Diff line number Diff line Loading @@ -34,9 +34,9 @@ class BlockingManager @Inject constructor( override fun isAvailable(): Boolean = client.isAvailable() override fun isAvailable(): Boolean = client.isAvailable() override fun getClientCapability(): BlockingClientCapability = client.getClientCapability() override fun getClientCapability(): BlockingClient.Capability = client.getClientCapability() override fun isBlocked(address: String): Single<Boolean> = client.isBlocked(address) override fun getAction(address: String): Single<BlockingClient.Action> = client.getAction(address) override fun block(addresses: List<String>): Completable = client.block(addresses) override fun block(addresses: List<String>): Completable = client.block(addresses) Loading data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt +11 −8 Original line number Original line Diff line number Diff line Loading @@ -46,16 +46,19 @@ class CallControlBlockingClient @Inject constructor( override fun isAvailable(): Boolean = context.isInstalled("com.flexaspect.android.everycallcontrol") override fun isAvailable(): Boolean = context.isInstalled("com.flexaspect.android.everycallcontrol") override fun getClientCapability() = BlockingClientCapability.BLOCK_WITH_PERMISSION override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION override fun isBlocked(address: String): Single<Boolean> { override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address) val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address) return Single.fromCallable { val blocked = tryOrNull { tryOrNull { context.contentResolver.query(uri, projection, null, null, null) // Query URI context.contentResolver.query(uri, projection, null, null, null) // Query URI ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.any { result -> result.blockReason != null } // Check if any are blocked ?.any { result -> result.blockReason != null } // Check if any are blocked } == true // If none are blocked or we errored at some point, return false } == true // If none are blocked or we errored at some point, return false when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK } } } } Loading data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt +6 −3 Original line number Original line Diff line number Diff line Loading @@ -29,10 +29,13 @@ class QksmsBlockingClient @Inject constructor( override fun isAvailable(): Boolean = true override fun isAvailable(): Boolean = true override fun getClientCapability() = BlockingClientCapability.BLOCK_WITHOUT_PERMISSION override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITHOUT_PERMISSION override fun isBlocked(address: String): Single<Boolean> = Single.fromCallable { override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { blockingRepo.isBlocked(address) when (blockingRepo.isBlocked(address)) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK } } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { override fun block(addresses: List<String>): Completable = Completable.fromCallable { Loading data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt +8 −5 Original line number Original line Diff line number Diff line Loading @@ -53,13 +53,16 @@ class ShouldIAnswerBlockingClient @Inject constructor( "org.mistergroup.muzutozvednout") "org.mistergroup.muzutozvednout") .any(context::isInstalled) .any(context::isInstalled) override fun getClientCapability() = BlockingClientCapability.CANT_BLOCK override fun getClientCapability() = BlockingClient.Capability.CANT_BLOCK /** override fun getAction(address: String): Single<BlockingClient.Action> { * Return a Single<Boolean> which emits whether or not the given [address] should be blocked */ override fun isBlocked(address: String): Single<Boolean> { return Binder(context, address).isBlocked() return Binder(context, address).isBlocked() .map { blocked -> when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.DO_NOTHING } } } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { openSettings() } override fun block(addresses: List<String>): Completable = Completable.fromCallable { openSettings() } Loading data/src/main/java/com/moez/QKSMS/repository/ConversationRepositoryImpl.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -355,7 +355,7 @@ class ConversationRepositoryImpl @Inject constructor( } } conversation.blocked = recipients.any { recipient -> conversation.blocked = recipients.any { recipient -> blockingClient.isBlocked(recipient.address).blockingGet() blockingClient.getAction(recipient.address).blockingGet() == BlockingClient.Action.BLOCK } } conversation.recipients.clear() conversation.recipients.clear() Loading Loading
data/src/main/java/com/moez/QKSMS/blocking/BlockingManager.kt +2 −2 Original line number Original line Diff line number Diff line Loading @@ -34,9 +34,9 @@ class BlockingManager @Inject constructor( override fun isAvailable(): Boolean = client.isAvailable() override fun isAvailable(): Boolean = client.isAvailable() override fun getClientCapability(): BlockingClientCapability = client.getClientCapability() override fun getClientCapability(): BlockingClient.Capability = client.getClientCapability() override fun isBlocked(address: String): Single<Boolean> = client.isBlocked(address) override fun getAction(address: String): Single<BlockingClient.Action> = client.getAction(address) override fun block(addresses: List<String>): Completable = client.block(addresses) override fun block(addresses: List<String>): Completable = client.block(addresses) Loading
data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt +11 −8 Original line number Original line Diff line number Diff line Loading @@ -46,16 +46,19 @@ class CallControlBlockingClient @Inject constructor( override fun isAvailable(): Boolean = context.isInstalled("com.flexaspect.android.everycallcontrol") override fun isAvailable(): Boolean = context.isInstalled("com.flexaspect.android.everycallcontrol") override fun getClientCapability() = BlockingClientCapability.BLOCK_WITH_PERMISSION override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION override fun isBlocked(address: String): Single<Boolean> { override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address) val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address) return Single.fromCallable { val blocked = tryOrNull { tryOrNull { context.contentResolver.query(uri, projection, null, null, null) // Query URI context.contentResolver.query(uri, projection, null, null, null) // Query URI ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.any { result -> result.blockReason != null } // Check if any are blocked ?.any { result -> result.blockReason != null } // Check if any are blocked } == true // If none are blocked or we errored at some point, return false } == true // If none are blocked or we errored at some point, return false when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK } } } } Loading
data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt +6 −3 Original line number Original line Diff line number Diff line Loading @@ -29,10 +29,13 @@ class QksmsBlockingClient @Inject constructor( override fun isAvailable(): Boolean = true override fun isAvailable(): Boolean = true override fun getClientCapability() = BlockingClientCapability.BLOCK_WITHOUT_PERMISSION override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITHOUT_PERMISSION override fun isBlocked(address: String): Single<Boolean> = Single.fromCallable { override fun getAction(address: String): Single<BlockingClient.Action> = Single.fromCallable { blockingRepo.isBlocked(address) when (blockingRepo.isBlocked(address)) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.UNBLOCK } } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { override fun block(addresses: List<String>): Completable = Completable.fromCallable { Loading
data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt +8 −5 Original line number Original line Diff line number Diff line Loading @@ -53,13 +53,16 @@ class ShouldIAnswerBlockingClient @Inject constructor( "org.mistergroup.muzutozvednout") "org.mistergroup.muzutozvednout") .any(context::isInstalled) .any(context::isInstalled) override fun getClientCapability() = BlockingClientCapability.CANT_BLOCK override fun getClientCapability() = BlockingClient.Capability.CANT_BLOCK /** override fun getAction(address: String): Single<BlockingClient.Action> { * Return a Single<Boolean> which emits whether or not the given [address] should be blocked */ override fun isBlocked(address: String): Single<Boolean> { return Binder(context, address).isBlocked() return Binder(context, address).isBlocked() .map { blocked -> when (blocked) { true -> BlockingClient.Action.BLOCK false -> BlockingClient.Action.DO_NOTHING } } } } override fun block(addresses: List<String>): Completable = Completable.fromCallable { openSettings() } override fun block(addresses: List<String>): Completable = Completable.fromCallable { openSettings() } Loading
data/src/main/java/com/moez/QKSMS/repository/ConversationRepositoryImpl.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -355,7 +355,7 @@ class ConversationRepositoryImpl @Inject constructor( } } conversation.blocked = recipients.any { recipient -> conversation.blocked = recipients.any { recipient -> blockingClient.isBlocked(recipient.address).blockingGet() blockingClient.getAction(recipient.address).blockingGet() == BlockingClient.Action.BLOCK } } conversation.recipients.clear() conversation.recipients.clear() Loading