Always use register to open the distributor dialog

The forced unregistration always happens in register
function
This commit is contained in:
sim 2022-08-24 23:08:19 +02:00
parent 02d54878c3
commit a4dd08ddb3
3 changed files with 16 additions and 29 deletions

View File

@ -46,6 +46,7 @@ class UnifiedPushHelper @Inject constructor(
private val vectorFeatures: VectorFeatures,
private val fcmHelper: FcmHelper,
) {
fun register(
activity: FragmentActivity,
onDoneRunnable: Runnable? = null,
@ -56,7 +57,14 @@ class UnifiedPushHelper @Inject constructor(
)
}
fun reRegister(
// 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)
fun forceRegister(
activity: FragmentActivity,
pushersManager: PushersManager,
onDoneRunnable: Runnable? = null
@ -86,7 +94,8 @@ class UnifiedPushHelper @Inject constructor(
// Un-register first
unregister(pushersManager)
}
if (UnifiedPush.getDistributor(context).isNotEmpty()) {
// the !force should not be needed
if (!force && UnifiedPush.getDistributor(context).isNotEmpty()) {
UnifiedPush.registerApp(context)
onDoneRunnable?.run()
return@launch
@ -94,42 +103,24 @@ class UnifiedPushHelper @Inject constructor(
val distributors = UnifiedPush.getDistributors(context)
if (distributors.size == 1 && !force) {
if (!force && distributors.size == 1) {
UnifiedPush.saveDistributor(context, distributors.first())
UnifiedPush.registerApp(context)
onDoneRunnable?.run()
} else {
openDistributorDialogInternal(
activity = activity,
pushersManager = pushersManager,
onDoneRunnable = onDoneRunnable,
distributors = distributors,
unregisterFirst = force
distributors = distributors
)
}
}
}
fun openDistributorDialog(
activity: FragmentActivity,
pushersManager: PushersManager,
onDoneRunnable: Runnable,
) {
val distributors = UnifiedPush.getDistributors(activity)
openDistributorDialogInternal(
activity,
pushersManager,
onDoneRunnable, distributors,
unregisterFirst = true,
)
}
private fun openDistributorDialogInternal(
activity: FragmentActivity,
pushersManager: PushersManager?,
onDoneRunnable: Runnable?,
distributors: List<String>,
unregisterFirst: Boolean,
distributors: List<String>
) {
val internalDistributorName = stringProvider.getString(
if (fcmHelper.isFirebaseAvailable()) {
@ -157,10 +148,6 @@ class UnifiedPushHelper @Inject constructor(
}
activity.lifecycleScope.launch {
if (unregisterFirst) {
// Un-register first
unregister(pushersManager)
}
UnifiedPush.saveDistributor(context, distributor)
Timber.i("Saving distributor: $distributor")
UnifiedPush.registerApp(context)

View File

@ -158,7 +158,7 @@ class VectorSettingsNotificationPreferenceFragment :
if (vectorFeatures.allowExternalUnifiedPushDistributors()) {
it.summary = unifiedPushHelper.getCurrentDistributorName()
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
unifiedPushHelper.openDistributorDialog(requireActivity(), pushersManager) {
unifiedPushHelper.forceRegister(requireActivity(), pushersManager) {
it.summary = unifiedPushHelper.getCurrentDistributorName()
session.pushersService().refreshPushers()
refreshBackgroundSyncPrefs()

View File

@ -60,7 +60,7 @@ class TestEndpointAsTokenRegistration @Inject constructor(
)
quickFix = object : TroubleshootQuickFix(R.string.settings_troubleshoot_test_endpoint_registration_quick_fix) {
override fun doFix() {
unifiedPushHelper.reRegister(
unifiedPushHelper.forceRegister(
context,
pushersManager
)