Start cheogram.com register on first setup if no other PSTNS/SMS gateway

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java           |  4 
src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java |  5 
src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java     | 39 
3 files changed, 41 insertions(+), 7 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java 🔗

@@ -447,9 +447,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
             final boolean wasFirstAccount = xmppConnectionService != null && xmppConnectionService.getAccounts().size() == 1;
             if (avatar != null || (connection != null && !connection.getFeatures().pep())) {
                 intent = new Intent(getApplicationContext(), StartConversationActivity.class);
-                if (wasFirstAccount) {
-                    intent.putExtra("init", true);
-                }
+                intent.putExtra("init", true);
                 intent.putExtra(EXTRA_ACCOUNT, mAccount.getJid().asBareJid().toEscapedString());
             } else {
                 intent = new Intent(getApplicationContext(), PublishProfilePictureActivity.class);

src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java 🔗

@@ -108,10 +108,7 @@ public class PublishProfilePictureActivity extends XmppActivity implements XmppC
                         final Intent intent =
                                 new Intent(
                                         getApplicationContext(), StartConversationActivity.class);
-                        if (xmppConnectionService != null
-                                && xmppConnectionService.getAccounts().size() == 1) {
-                            intent.putExtra("init", true);
-                        }
+                        intent.putExtra("init", true);
                         StartConversationActivity.addInviteUri(intent, getIntent());
                         if (account != null) {
                             intent.putExtra(

src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java 🔗

@@ -314,6 +314,10 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
             intent = savedInstanceState.getParcelable("intent");
         }
 
+        if (intent.getBooleanExtra("init", false)) {
+            pendingViewIntent.push(intent);
+        }
+
         if (isViewIntent(intent)) {
             pendingViewIntent.push(intent);
             createdByViewIntent = true;
@@ -868,6 +872,41 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
         this.mActivatedAccounts.addAll(AccountUtils.getEnabledAccounts(xmppConnectionService));
         configureHomeButton();
         Intent intent = pendingViewIntent.pop();
+
+        if (intent != null && intent.getBooleanExtra("init", false)) {
+            Account selectedAccount = xmppConnectionService.getAccounts().get(0);
+            final String accountJid = intent.getStringExtra(EXTRA_ACCOUNT);
+            intent = null;
+            boolean hasPstnOrSms = false;
+            outer:
+            for (Account account : xmppConnectionService.getAccounts()) {
+                if (accountJid != null) {
+                    if(account.getJid().asBareJid().toEscapedString().equals(accountJid)) {
+                        selectedAccount = account;
+                    } else {
+                        continue;
+                    }
+                }
+
+                for (Contact contact : account.getRoster().getContacts()) {
+                    if (contact.getPresences().anyIdentity("gateway", "pstn")) {
+                        hasPstnOrSms = true;
+                        break outer;
+                    }
+                    if (contact.getPresences().anyIdentity("gateway", "sms")) {
+                        hasPstnOrSms = true;
+                        break outer;
+                    }
+                }
+            }
+
+            if (!hasPstnOrSms) {
+                startCommand(selectedAccount, Jid.of("cheogram.com/CHEOGRAM%jabber:iq:register"), "jabber:iq:register");
+                finish();
+                return;
+            }
+        }
+
         if (intent != null && processViewIntent(intent)) {
             filter(null);
         } else {