Merge branch 'misc/refactor-uphelper' into fix/fcm-push2
This commit is contained in:
commit
7bdcacf489
|
@ -0,0 +1 @@
|
||||||
|
Smaff refactor of UnifiedPushHelper
|
|
@ -46,6 +46,9 @@ class UnifiedPushHelper @Inject constructor(
|
||||||
private val vectorFeatures: VectorFeatures,
|
private val vectorFeatures: VectorFeatures,
|
||||||
private val fcmHelper: FcmHelper,
|
private val fcmHelper: FcmHelper,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
// Called when the home activity starts
|
||||||
|
// or when notifications are enabled
|
||||||
fun register(
|
fun register(
|
||||||
activity: FragmentActivity,
|
activity: FragmentActivity,
|
||||||
onDoneRunnable: Runnable? = null,
|
onDoneRunnable: Runnable? = null,
|
||||||
|
@ -56,7 +59,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,
|
activity: FragmentActivity,
|
||||||
pushersManager: PushersManager,
|
pushersManager: PushersManager,
|
||||||
onDoneRunnable: Runnable? = null
|
onDoneRunnable: Runnable? = null
|
||||||
|
@ -86,7 +96,8 @@ class UnifiedPushHelper @Inject constructor(
|
||||||
// Un-register first
|
// Un-register first
|
||||||
unregister(pushersManager)
|
unregister(pushersManager)
|
||||||
}
|
}
|
||||||
if (UnifiedPush.getDistributor(context).isNotEmpty()) {
|
// the !force should not be needed
|
||||||
|
if (!force && UnifiedPush.getDistributor(context).isNotEmpty()) {
|
||||||
UnifiedPush.registerApp(context)
|
UnifiedPush.registerApp(context)
|
||||||
onDoneRunnable?.run()
|
onDoneRunnable?.run()
|
||||||
return@launch
|
return@launch
|
||||||
|
@ -94,45 +105,26 @@ class UnifiedPushHelper @Inject constructor(
|
||||||
|
|
||||||
val distributors = UnifiedPush.getDistributors(context)
|
val distributors = UnifiedPush.getDistributors(context)
|
||||||
|
|
||||||
if (distributors.size == 1 && !force) {
|
if (!force && distributors.size == 1) {
|
||||||
UnifiedPush.saveDistributor(context, distributors.first())
|
UnifiedPush.saveDistributor(context, distributors.first())
|
||||||
UnifiedPush.registerApp(context)
|
UnifiedPush.registerApp(context)
|
||||||
onDoneRunnable?.run()
|
onDoneRunnable?.run()
|
||||||
} else {
|
} else {
|
||||||
openDistributorDialogInternal(
|
openDistributorDialogInternal(
|
||||||
activity = activity,
|
activity = activity,
|
||||||
pushersManager = pushersManager,
|
|
||||||
onDoneRunnable = onDoneRunnable,
|
onDoneRunnable = onDoneRunnable,
|
||||||
distributors = distributors,
|
distributors = distributors
|
||||||
unregisterFirst = force,
|
|
||||||
cancellable = !force
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun openDistributorDialog(
|
// There is no case where this function is called
|
||||||
activity: FragmentActivity,
|
// with a saved distributor and/or a pusher
|
||||||
pushersManager: PushersManager,
|
|
||||||
onDoneRunnable: Runnable,
|
|
||||||
) {
|
|
||||||
val distributors = UnifiedPush.getDistributors(activity)
|
|
||||||
openDistributorDialogInternal(
|
|
||||||
activity,
|
|
||||||
pushersManager,
|
|
||||||
onDoneRunnable, distributors,
|
|
||||||
unregisterFirst = true,
|
|
||||||
cancellable = true,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun openDistributorDialogInternal(
|
private fun openDistributorDialogInternal(
|
||||||
activity: FragmentActivity,
|
activity: FragmentActivity,
|
||||||
pushersManager: PushersManager?,
|
|
||||||
onDoneRunnable: Runnable?,
|
onDoneRunnable: Runnable?,
|
||||||
distributors: List<String>,
|
distributors: List<String>
|
||||||
unregisterFirst: Boolean,
|
|
||||||
cancellable: Boolean,
|
|
||||||
) {
|
) {
|
||||||
val internalDistributorName = stringProvider.getString(
|
val internalDistributorName = stringProvider.getString(
|
||||||
if (fcmHelper.isFirebaseAvailable()) {
|
if (fcmHelper.isFirebaseAvailable()) {
|
||||||
|
@ -154,16 +146,8 @@ class UnifiedPushHelper @Inject constructor(
|
||||||
.setTitle(stringProvider.getString(R.string.unifiedpush_getdistributors_dialog_title))
|
.setTitle(stringProvider.getString(R.string.unifiedpush_getdistributors_dialog_title))
|
||||||
.setItems(distributorsName.toTypedArray()) { _, which ->
|
.setItems(distributorsName.toTypedArray()) { _, which ->
|
||||||
val distributor = distributors[which]
|
val distributor = distributors[which]
|
||||||
if (distributor == UnifiedPush.getDistributor(context)) {
|
|
||||||
Timber.d("Same distributor selected again, no action")
|
|
||||||
return@setItems
|
|
||||||
}
|
|
||||||
|
|
||||||
activity.lifecycleScope.launch {
|
activity.lifecycleScope.launch {
|
||||||
if (unregisterFirst) {
|
|
||||||
// Un-register first
|
|
||||||
unregister(pushersManager)
|
|
||||||
}
|
|
||||||
UnifiedPush.saveDistributor(context, distributor)
|
UnifiedPush.saveDistributor(context, distributor)
|
||||||
Timber.i("Saving distributor: $distributor")
|
Timber.i("Saving distributor: $distributor")
|
||||||
UnifiedPush.registerApp(context)
|
UnifiedPush.registerApp(context)
|
||||||
|
@ -176,7 +160,7 @@ class UnifiedPushHelper @Inject constructor(
|
||||||
UnifiedPush.registerApp(context)
|
UnifiedPush.registerApp(context)
|
||||||
onDoneRunnable?.run()
|
onDoneRunnable?.run()
|
||||||
}
|
}
|
||||||
.setCancelable(cancellable)
|
.setCancelable(true)
|
||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -158,7 +158,7 @@ class VectorSettingsNotificationPreferenceFragment :
|
||||||
if (vectorFeatures.allowExternalUnifiedPushDistributors()) {
|
if (vectorFeatures.allowExternalUnifiedPushDistributors()) {
|
||||||
it.summary = unifiedPushHelper.getCurrentDistributorName()
|
it.summary = unifiedPushHelper.getCurrentDistributorName()
|
||||||
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
|
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
|
||||||
unifiedPushHelper.openDistributorDialog(requireActivity(), pushersManager) {
|
unifiedPushHelper.forceRegister(requireActivity(), pushersManager) {
|
||||||
it.summary = unifiedPushHelper.getCurrentDistributorName()
|
it.summary = unifiedPushHelper.getCurrentDistributorName()
|
||||||
session.pushersService().refreshPushers()
|
session.pushersService().refreshPushers()
|
||||||
refreshBackgroundSyncPrefs()
|
refreshBackgroundSyncPrefs()
|
||||||
|
|
|
@ -59,7 +59,7 @@ class TestEndpointAsTokenRegistration @Inject constructor(
|
||||||
)
|
)
|
||||||
quickFix = object : TroubleshootQuickFix(R.string.settings_troubleshoot_test_endpoint_registration_quick_fix) {
|
quickFix = object : TroubleshootQuickFix(R.string.settings_troubleshoot_test_endpoint_registration_quick_fix) {
|
||||||
override fun doFix() {
|
override fun doFix() {
|
||||||
unifiedPushHelper.reRegister(
|
unifiedPushHelper.forceRegister(
|
||||||
context,
|
context,
|
||||||
pushersManager
|
pushersManager
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue