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

Commit d91c9043 authored by moezbhatti's avatar moezbhatti
Browse files

Don't use system blocking provider, since it won't let messages reach QKSMS anyway

parent 6b3fffda
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ import javax.inject.Singleton
class BlockingManager @Inject constructor(
    private val prefs: Preferences,
    private val callControlBlockingClient: CallControlBlockingClient,
    private val androidBlockingClient: AndroidBlockingClient,
    private val qksmsBlockingClient: QksmsBlockingClient,
    private val shouldIAnswerBlockingClient: ShouldIAnswerBlockingClient
) : BlockingClient {

@@ -21,7 +21,7 @@ class BlockingManager @Inject constructor(
        get() = when (prefs.blockingManager.get()) {
            Preferences.BLOCKING_MANAGER_SIA -> shouldIAnswerBlockingClient
            Preferences.BLOCKING_MANAGER_CC -> callControlBlockingClient
            else -> androidBlockingClient
            else -> qksmsBlockingClient
        }

    init {
+50 −0
Original line number Diff line number Diff line
@@ -18,67 +18,33 @@
 */
package com.moez.QKSMS.blocking

import android.content.Context
import android.content.Intent
import android.os.Build
import android.provider.BlockedNumberContract
import android.telecom.TelecomManager
import androidx.core.content.contentValuesOf
import com.moez.QKSMS.repository.BlockingRepository
import io.reactivex.Completable
import io.reactivex.Single
import javax.inject.Inject

class AndroidBlockingClient @Inject constructor(
    private val context: Context,
class QksmsBlockingClient @Inject constructor(
    private val blockingRepo: BlockingRepository
) : BlockingClient {

    override fun isAvailable(): Boolean = true

    override fun isBlocked(address: String): Single<Boolean> = Single.fromCallable {
        when {
            Build.VERSION.SDK_INT >= 24 -> BlockedNumberContract.isBlocked(context, address)

            else -> blockingRepo.isBlocked(address)
        }
        blockingRepo.isBlocked(address)
    }

    override fun canBlock(): Boolean = true

    override fun block(addresses: List<String>): Completable = Completable.fromCallable {
        when {
            Build.VERSION.SDK_INT >= 24 -> addresses.forEach { address ->
                val cv = contentValuesOf(BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER to address)
                context.contentResolver.insert(BlockedNumberContract.BlockedNumbers.CONTENT_URI, cv)
            }

            else -> blockingRepo.blockNumber(*addresses.toTypedArray())
        }
        blockingRepo.blockNumber(*addresses.toTypedArray())
    }

    override fun canUnblock(): Boolean = true

    override fun unblock(addresses: List<String>): Completable = Completable.fromCallable {
        when {
            Build.VERSION.SDK_INT >= 24 -> addresses.forEach { address ->
                BlockedNumberContract.unblock(context, address)
            }

            else -> blockingRepo.unblockNumbers(*addresses.toTypedArray())
        }
    }

    override fun openSettings() = when {
        Build.VERSION.SDK_INT >= 24 -> {
            val telecomManager = context.getSystemService(Context.TELECOM_SERVICE) as TelecomManager
            val intent = telecomManager.createManageBlockedNumbersIntent()
                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

            context.startActivity(intent)
        blockingRepo.unblockNumbers(*addresses.toTypedArray())
    }

        else -> {} // TODO: Do this here once we implement AndroidX navigation
    }
    override fun openSettings() = Unit // TODO: Do this here once we implement AndroidX navigation

}
+2 −2
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ class Preferences @Inject constructor(private val rxPrefs: RxSharedPreferences)
        const val SWIPE_ACTION_READ = 4
        const val SWIPE_ACTION_UNREAD = 5

        const val BLOCKING_MANAGER_ANDROID = 0
        const val BLOCKING_MANAGER_QKSMS = 0
        const val BLOCKING_MANAGER_CC = 1
        const val BLOCKING_MANAGER_SIA = 2
    }
@@ -82,7 +82,7 @@ class Preferences @Inject constructor(private val rxPrefs: RxSharedPreferences)
    val textSize = rxPrefs.getInteger("textSize", TEXT_SIZE_NORMAL)
    @Deprecated("This should only be accessed when migrating to @blockingManager")
    val sia = rxPrefs.getBoolean("sia", false)
    val blockingManager = rxPrefs.getInteger("blockingManager", BLOCKING_MANAGER_ANDROID)
    val blockingManager = rxPrefs.getInteger("blockingManager", BLOCKING_MANAGER_QKSMS)
    val drop = rxPrefs.getBoolean("drop", false)
    val notifAction1 = rxPrefs.getInteger("notifAction1", NOTIFICATION_ACTION_READ)
    val notifAction2 = rxPrefs.getInteger("notifAction2", NOTIFICATION_ACTION_REPLY)
+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ class BlockingDialog @Inject constructor(
        val manager = context.getString(when (prefs.blockingManager.get()) {
            Preferences.BLOCKING_MANAGER_SIA -> R.string.blocking_manager_sia_title
            Preferences.BLOCKING_MANAGER_CC -> R.string.blocking_manager_call_control_title
            else -> R.string.blocking_manager_android_title
            else -> R.string.blocking_manager_qksms_title
        })

        val message = context.resources.getQuantityString(res, addresses.size, manager)
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ class BlockingPresenter @Inject constructor(
                    when (client) {
                        Preferences.BLOCKING_MANAGER_SIA -> R.string.blocking_manager_sia_title
                        Preferences.BLOCKING_MANAGER_CC -> R.string.blocking_manager_call_control_title
                        else -> R.string.blocking_manager_android_title
                        else -> R.string.blocking_manager_qksms_title
                    }
                }
                .map(context::getString)
Loading