mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-01-18 20:39:57 +01:00
Removing the old methods from helper
This commit is contained in:
parent
2673979ef8
commit
740ed89638
@ -18,20 +18,12 @@ package im.vector.app.core.pushers
|
||||
|
||||
import android.content.Context
|
||||
import androidx.annotation.MainThread
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.squareup.moshi.Json
|
||||
import com.squareup.moshi.JsonClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import im.vector.app.core.utils.getApplicationLabel
|
||||
import im.vector.app.features.VectorFeatures
|
||||
import im.vector.app.features.settings.BackgroundSyncMode
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.matrix.android.sdk.api.Matrix
|
||||
import org.matrix.android.sdk.api.cache.CacheStrategy
|
||||
import org.matrix.android.sdk.api.util.MatrixJsonParser
|
||||
@ -44,140 +36,10 @@ class UnifiedPushHelper @Inject constructor(
|
||||
private val context: Context,
|
||||
private val unifiedPushStore: UnifiedPushStore,
|
||||
private val stringProvider: StringProvider,
|
||||
private val vectorPreferences: VectorPreferences,
|
||||
private val matrix: Matrix,
|
||||
private val vectorFeatures: VectorFeatures,
|
||||
private val fcmHelper: FcmHelper,
|
||||
) {
|
||||
|
||||
// Called when the home activity starts
|
||||
// or when notifications are enabled
|
||||
// TODO remove
|
||||
fun register(
|
||||
activity: FragmentActivity,
|
||||
onDoneRunnable: Runnable? = null,
|
||||
) {
|
||||
registerInternal(
|
||||
activity,
|
||||
onDoneRunnable = onDoneRunnable
|
||||
)
|
||||
}
|
||||
|
||||
// If registration is forced:
|
||||
// * the current distributor (if any) is removed
|
||||
// * The dialog is opened
|
||||
//
|
||||
// The registration is forced in 2 cases :
|
||||
// * in the settings
|
||||
// * in the troubleshoot list (doFix)
|
||||
// TODO remove
|
||||
fun forceRegister(
|
||||
activity: FragmentActivity,
|
||||
pushersManager: PushersManager,
|
||||
@MainThread onDoneRunnable: Runnable? = null
|
||||
) {
|
||||
registerInternal(
|
||||
activity,
|
||||
force = true,
|
||||
pushersManager = pushersManager,
|
||||
onDoneRunnable = onDoneRunnable
|
||||
)
|
||||
}
|
||||
|
||||
// TODO remove
|
||||
private fun registerInternal(
|
||||
activity: FragmentActivity,
|
||||
force: Boolean = false,
|
||||
pushersManager: PushersManager? = null,
|
||||
onDoneRunnable: Runnable? = null
|
||||
) {
|
||||
activity.lifecycleScope.launch(Dispatchers.IO) {
|
||||
Timber.d("registerInternal force=$force, $activity on thread ${Thread.currentThread()}")
|
||||
if (!vectorFeatures.allowExternalUnifiedPushDistributors()) {
|
||||
UnifiedPush.saveDistributor(context, context.packageName)
|
||||
UnifiedPush.registerApp(context)
|
||||
withContext(Dispatchers.Main) {
|
||||
onDoneRunnable?.run()
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
if (force) {
|
||||
// Un-register first
|
||||
unregister(pushersManager)
|
||||
}
|
||||
// the !force should not be needed
|
||||
if (!force && UnifiedPush.getDistributor(context).isNotEmpty()) {
|
||||
UnifiedPush.registerApp(context)
|
||||
withContext(Dispatchers.Main) {
|
||||
onDoneRunnable?.run()
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
|
||||
val distributors = UnifiedPush.getDistributors(context)
|
||||
|
||||
if (!force && distributors.size == 1) {
|
||||
UnifiedPush.saveDistributor(context, distributors.first())
|
||||
UnifiedPush.registerApp(context)
|
||||
withContext(Dispatchers.Main) {
|
||||
onDoneRunnable?.run()
|
||||
}
|
||||
} else {
|
||||
openDistributorDialogInternal(
|
||||
activity = activity,
|
||||
onDoneRunnable = onDoneRunnable,
|
||||
distributors = distributors
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO remove
|
||||
// There is no case where this function is called
|
||||
// with a saved distributor and/or a pusher
|
||||
private fun openDistributorDialogInternal(
|
||||
activity: FragmentActivity,
|
||||
onDoneRunnable: Runnable?,
|
||||
distributors: List<String>
|
||||
) {
|
||||
val internalDistributorName = stringProvider.getString(
|
||||
if (fcmHelper.isFirebaseAvailable()) {
|
||||
R.string.unifiedpush_distributor_fcm_fallback
|
||||
} else {
|
||||
R.string.unifiedpush_distributor_background_sync
|
||||
}
|
||||
)
|
||||
|
||||
val distributorsName = distributors.map {
|
||||
if (it == context.packageName) {
|
||||
internalDistributorName
|
||||
} else {
|
||||
context.getApplicationLabel(it)
|
||||
}
|
||||
}
|
||||
|
||||
MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(stringProvider.getString(R.string.unifiedpush_getdistributors_dialog_title))
|
||||
.setItems(distributorsName.toTypedArray()) { _, which ->
|
||||
val distributor = distributors[which]
|
||||
|
||||
activity.lifecycleScope.launch {
|
||||
UnifiedPush.saveDistributor(context, distributor)
|
||||
Timber.i("Saving distributor: $distributor")
|
||||
UnifiedPush.registerApp(context)
|
||||
onDoneRunnable?.run()
|
||||
}
|
||||
}
|
||||
.setOnCancelListener {
|
||||
// By default, use internal solution (fcm/background sync)
|
||||
UnifiedPush.saveDistributor(context, context.packageName)
|
||||
UnifiedPush.registerApp(context)
|
||||
onDoneRunnable?.run()
|
||||
}
|
||||
.setCancelable(true)
|
||||
.show()
|
||||
}
|
||||
|
||||
@MainThread
|
||||
fun showSelectDistributorDialog(
|
||||
context: Context,
|
||||
@ -217,23 +79,6 @@ class UnifiedPushHelper @Inject constructor(
|
||||
.show()
|
||||
}
|
||||
|
||||
// TODO remove
|
||||
suspend fun unregister(pushersManager: PushersManager? = null) {
|
||||
val mode = BackgroundSyncMode.FDROID_BACKGROUND_SYNC_MODE_FOR_REALTIME
|
||||
vectorPreferences.setFdroidSyncBackgroundMode(mode)
|
||||
try {
|
||||
getEndpointOrToken()?.let {
|
||||
Timber.d("Removing $it")
|
||||
pushersManager?.unregisterPusher(it)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.d(e, "Probably unregistering a non existing pusher")
|
||||
}
|
||||
unifiedPushStore.storeUpEndpoint(null)
|
||||
unifiedPushStore.storePushGateway(null)
|
||||
UnifiedPush.unregisterApp(context)
|
||||
}
|
||||
|
||||
@JsonClass(generateAdapter = true)
|
||||
internal data class DiscoveryResponse(
|
||||
@Json(name = "unifiedpush") val unifiedpush: DiscoveryUnifiedPush = DiscoveryUnifiedPush()
|
||||
|
Loading…
Reference in New Issue
Block a user