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)