Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1b1a6c8 authored by moezbhatti's avatar moezbhatti
Browse files

Don't unblock numbers not reported by SIA

parent 03af8133
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -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)


+11 −8
Original line number Original line Diff line number Diff line
@@ -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
        }
        }
    }
    }


+6 −3
Original line number Original line Diff line number Diff line
@@ -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 {
+8 −5
Original line number Original line Diff line number Diff line
@@ -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() }
+1 −1
Original line number Original line Diff line number Diff line
@@ -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