From abfae8fb42630c2406e5f70c89d5b7170ca180e0 Mon Sep 17 00:00:00 2001 From: S1m Date: Sun, 14 Jan 2024 14:42:27 +0100 Subject: [PATCH] Show dialog to register UnifiedPush again if needed on MainActivity. This could occur if the Distributor unregister Molly or if the distributor has been uninstalled --- .../thoughtcrime/securesms/MainActivity.java | 4 ++++ app/src/main/res/values/strings2.xml | 5 +++++ .../unifiedpush/util/UnifiedPushHelper.kt | 21 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java index 755ffc089b..45adc0a892 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.java @@ -34,6 +34,8 @@ import org.thoughtcrime.securesms.util.SplashScreenUtil; import org.thoughtcrime.securesms.util.WindowUtil; +import static im.molly.unifiedpush.util.UnifiedPushHelper.registerAppWithDialogIfNeeded; + public class MainActivity extends PassphraseRequiredActivity implements VoiceNoteMediaControllerOwner { public static final int RESULT_CONFIG_CHANGED = Activity.RESULT_FIRST_USER + 901; @@ -92,6 +94,8 @@ public boolean onPreDraw() { conversationListTabsViewModel = new ViewModelProvider(this, factory).get(ConversationListTabsViewModel.class); updateTabVisibility(); + + registerAppWithDialogIfNeeded(this); } @Override diff --git a/app/src/main/res/values/strings2.xml b/app/src/main/res/values/strings2.xml index 56b85b02cf..7c6f23d807 100644 --- a/app/src/main/res/values/strings2.xml +++ b/app/src/main/res/values/strings2.xml @@ -151,4 +151,9 @@ UnifiedPush Google Services WebSocket + No notification method found + You have configure Molly to use UnifiedPush, but you haven\'t installed any distributor. For more information, visit https://unifiedpush.org/ + OK + Ignore + Choose your notification method diff --git a/app/src/unifiedpush/java/im/molly/unifiedpush/util/UnifiedPushHelper.kt b/app/src/unifiedpush/java/im/molly/unifiedpush/util/UnifiedPushHelper.kt index 1d8fda61d9..1d73099f12 100644 --- a/app/src/unifiedpush/java/im/molly/unifiedpush/util/UnifiedPushHelper.kt +++ b/app/src/unifiedpush/java/im/molly/unifiedpush/util/UnifiedPushHelper.kt @@ -4,7 +4,11 @@ import android.content.Context import im.molly.unifiedpush.device.MollySocketLinkedDevice import im.molly.unifiedpush.model.UnifiedPushStatus import org.signal.core.util.logging.Log +import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.keyvalue.SignalStore +import org.unifiedpush.android.connector.ChooseDialog +import org.unifiedpush.android.connector.NoDistributorDialog +import org.unifiedpush.android.connector.RegistrationDialogContent import org.unifiedpush.android.connector.UnifiedPush object UnifiedPushHelper { @@ -25,6 +29,23 @@ object UnifiedPushHelper { return true } + @JvmStatic + fun registerAppWithDialogIfNeeded(context: Context) { + checkDistributorPresence(context) + if (SignalStore.unifiedpush().status == UnifiedPushStatus.MISSING_ENDPOINT) { + val dialogContent = RegistrationDialogContent( + noDistributorDialog = NoDistributorDialog( + title = context.getString(R.string.UnifiedPush_RegistrationDialog_NoDistrib_title), + message = context.getString(R.string.UnifiedPush_RegistrationDialog_NoDistrib_message), + okButton = context.getString(R.string.UnifiedPush_RegistrationDialog_NoDistrib_ok), + ignoreButton = context.getString(R.string.UnifiedPush_RegistrationDialog_NoDistrib_ignore) + ), + chooseDialog = ChooseDialog(context.getString(R.string.UnifiedPush_RegistrationDialog_Choose_title)) + ) + UnifiedPush.registerAppWithDialog(context, registrationDialogContent = dialogContent) + } + } + @JvmStatic fun isUnifiedPushAvailable(): Boolean { return SignalStore.unifiedpush().status in listOf(UnifiedPushStatus.OK, UnifiedPushStatus.AIR_GAPED)