mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-07 15:48:38 +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 android.content.Context
|
||||||
import androidx.annotation.MainThread
|
import androidx.annotation.MainThread
|
||||||
import androidx.fragment.app.FragmentActivity
|
|
||||||
import androidx.lifecycle.lifecycleScope
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
import com.squareup.moshi.JsonClass
|
import com.squareup.moshi.JsonClass
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
import im.vector.app.core.utils.getApplicationLabel
|
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.Matrix
|
||||||
import org.matrix.android.sdk.api.cache.CacheStrategy
|
import org.matrix.android.sdk.api.cache.CacheStrategy
|
||||||
import org.matrix.android.sdk.api.util.MatrixJsonParser
|
import org.matrix.android.sdk.api.util.MatrixJsonParser
|
||||||
@ -44,140 +36,10 @@ class UnifiedPushHelper @Inject constructor(
|
|||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val unifiedPushStore: UnifiedPushStore,
|
private val unifiedPushStore: UnifiedPushStore,
|
||||||
private val stringProvider: StringProvider,
|
private val stringProvider: StringProvider,
|
||||||
private val vectorPreferences: VectorPreferences,
|
|
||||||
private val matrix: Matrix,
|
private val matrix: Matrix,
|
||||||
private val vectorFeatures: VectorFeatures,
|
|
||||||
private val fcmHelper: FcmHelper,
|
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
|
@MainThread
|
||||||
fun showSelectDistributorDialog(
|
fun showSelectDistributorDialog(
|
||||||
context: Context,
|
context: Context,
|
||||||
@ -217,23 +79,6 @@ class UnifiedPushHelper @Inject constructor(
|
|||||||
.show()
|
.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)
|
@JsonClass(generateAdapter = true)
|
||||||
internal data class DiscoveryResponse(
|
internal data class DiscoveryResponse(
|
||||||
@Json(name = "unifiedpush") val unifiedpush: DiscoveryUnifiedPush = DiscoveryUnifiedPush()
|
@Json(name = "unifiedpush") val unifiedpush: DiscoveryUnifiedPush = DiscoveryUnifiedPush()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user