Files
quik/data/src/main/java/com/moez/QKSMS/blocking/BlockingManager.kt
T
2019-09-08 21:41:48 -04:00

48 lines
1.6 KiB
Kotlin

package com.moez.QKSMS.blocking
import com.moez.QKSMS.util.Preferences
import io.reactivex.Completable
import io.reactivex.Single
import javax.inject.Inject
import javax.inject.Singleton
/**
* Delegates requests to the active blocking client
*/
@Singleton
class BlockingManager @Inject constructor(
private val prefs: Preferences,
private val callControlBlockingClient: CallControlBlockingClient,
private val qksmsBlockingClient: QksmsBlockingClient,
private val shouldIAnswerBlockingClient: ShouldIAnswerBlockingClient
) : BlockingClient {
private val client: BlockingClient
get() = when (prefs.blockingManager.get()) {
Preferences.BLOCKING_MANAGER_SIA -> shouldIAnswerBlockingClient
Preferences.BLOCKING_MANAGER_CC -> callControlBlockingClient
else -> qksmsBlockingClient
}
init {
// Migrate from old SIA preference to blocking manager preference
if (prefs.sia.get()) {
prefs.blockingManager.set(Preferences.BLOCKING_MANAGER_SIA)
prefs.sia.delete()
}
}
override fun isAvailable(): Boolean = client.isAvailable()
override fun getClientCapability(): BlockingClient.Capability = client.getClientCapability()
override fun getAction(address: String): Single<BlockingClient.Action> = client.getAction(address)
override fun block(addresses: List<String>): Completable = client.block(addresses)
override fun unblock(addresses: List<String>): Completable = client.unblock(addresses)
override fun openSettings() = client.openSettings()
}