aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Schneppe <christian.schneppe@pix-art.de>2020-01-24 17:13:40 +0100
committerChristian Schneppe <christian.schneppe@pix-art.de>2020-01-24 17:13:40 +0100
commite71bfaa48d03ad97ab678e25707beec009b794bf (patch)
tree68ee7f33f121ff0b9667a9221fb1832209aa330c /src
parent6d74698aec0a2728ac1a88d27b3eb0aa7904e4c9 (diff)
support ?roster;ibr=y xmpp uris
Diffstat (limited to 'src')
-rw-r--r--src/main/java/de/pixart/messenger/ui/PublishProfilePictureActivity.java7
-rw-r--r--src/main/java/de/pixart/messenger/ui/StartConversationActivity.java16
-rw-r--r--src/main/java/de/pixart/messenger/ui/UriHandlerActivity.java17
-rw-r--r--src/main/java/de/pixart/messenger/utils/SignupUtils.java4
-rw-r--r--src/main/java/de/pixart/messenger/utils/XmppUri.java1
5 files changed, 25 insertions, 20 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/PublishProfilePictureActivity.java b/src/main/java/de/pixart/messenger/ui/PublishProfilePictureActivity.java
index 960e19ac7..725a74762 100644
--- a/src/main/java/de/pixart/messenger/ui/PublishProfilePictureActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/PublishProfilePictureActivity.java
@@ -4,7 +4,6 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
-import androidx.annotation.StringRes;
import android.util.Log;
import android.view.View;
import android.view.View.OnLongClickListener;
@@ -13,6 +12,8 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
+import androidx.annotation.StringRes;
+
import com.theartofdev.edmodo.cropper.CropImage;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -95,11 +96,11 @@ public class PublishProfilePictureActivity extends XmppActivity implements XmppC
});
this.cancelButton.setOnClickListener(v -> {
if (mInitialAccountSetup) {
- Intent intent = new Intent(getApplicationContext(), StartConversationActivity.class);
+ final Intent intent = new Intent(getApplicationContext(), StartConversationActivity.class);
if (xmppConnectionService != null && xmppConnectionService.getAccounts().size() == 1) {
- StartConversationActivity.addInviteUri(intent, getIntent());
intent.putExtra("init", true);
}
+ StartConversationActivity.addInviteUri(intent, getIntent());
startActivity(intent);
}
finish();
diff --git a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java
index cabdfc8fa..eb09fe859 100644
--- a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java
@@ -830,7 +830,8 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
showJoinConferenceDialog(invite.getJid().asBareJid().toString());
return false;
}
- } else if (contacts.size() == 0) {
+ } else if (contacts.size() == 0) { //TODO or init mode
+ //TODO if init mode; prefill dialog with account jid
showCreateContactDialog(invite.getJid().toString(), invite);
return false;
} else if (contacts.size() == 1) {
@@ -1232,7 +1233,8 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
public static void addInviteUri(Intent to, Intent from) {
if (from != null && from.hasExtra(EXTRA_INVITE_URI)) {
- to.putExtra(EXTRA_INVITE_URI, from.getStringExtra(EXTRA_INVITE_URI));
+ final String invite = from.getStringExtra(EXTRA_INVITE_URI);
+ to.putExtra(EXTRA_INVITE_URI, invite);
}
}
@@ -1240,17 +1242,13 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
public String account;
- public boolean forceDialog = false;
+ boolean forceDialog = false;
- public Invite(final Uri uri) {
+ Invite(final String uri) {
super(uri);
}
- public Invite(final String uri) {
- super(uri);
- }
-
- public Invite(Uri uri, boolean safeSource) {
+ Invite(Uri uri, boolean safeSource) {
super(uri, safeSource);
}
diff --git a/src/main/java/de/pixart/messenger/ui/UriHandlerActivity.java b/src/main/java/de/pixart/messenger/ui/UriHandlerActivity.java
index bb34e7958..9d30cdeb6 100644
--- a/src/main/java/de/pixart/messenger/ui/UriHandlerActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/UriHandlerActivity.java
@@ -7,7 +7,6 @@ import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
-import android.util.Log;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@@ -17,7 +16,6 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.pixart.messenger.Config;
import de.pixart.messenger.R;
import de.pixart.messenger.persistance.DatabaseBackend;
import de.pixart.messenger.utils.SignupUtils;
@@ -88,16 +86,23 @@ public class UriHandlerActivity extends AppCompatActivity {
final Intent intent;
final XmppUri xmppUri = new XmppUri(uri);
final List<Jid> accounts = DatabaseBackend.getInstance(this).getAccountJids(true);
- if (SignupUtils.isSupportTokenRegistry() && xmppUri.isJidValid() && xmppUri.isAction(XmppUri.ACTION_REGISTER)) {
+ if (SignupUtils.isSupportTokenRegistry() && xmppUri.isJidValid()) {
final String preauth = xmppUri.getParamater("preauth");
final Jid jid = xmppUri.getJid();
- if (jid.isDomainJid()) {
+ if (xmppUri.isAction(XmppUri.ACTION_REGISTER)) {
+ if (jid.isDomainJid()) {
+ intent = SignupUtils.getTokenRegistrationIntent(this, jid.getDomain(), preauth);
+ startActivity(intent);
+ return;
+ }
+ return;
+ }
+ if (xmppUri.isAction(XmppUri.ACTION_ROSTER) && "y".equals(xmppUri.getParamater("ibr"))) {
intent = SignupUtils.getTokenRegistrationIntent(this, jid.getDomain(), preauth);
+ intent.putExtra(StartConversationActivity.EXTRA_INVITE_URI, xmppUri.toString());
startActivity(intent);
return;
}
- Log.d(Config.LOGTAG, "attempting to register on " + jid + " with preauth=" + preauth);
- return;
}
if (accounts.size() == 0) {
if (xmppUri.isJidValid()) {
diff --git a/src/main/java/de/pixart/messenger/utils/SignupUtils.java b/src/main/java/de/pixart/messenger/utils/SignupUtils.java
index 21c62cffa..2c0418a19 100644
--- a/src/main/java/de/pixart/messenger/utils/SignupUtils.java
+++ b/src/main/java/de/pixart/messenger/utils/SignupUtils.java
@@ -19,10 +19,10 @@ public class SignupUtils {
return true;
}
- public static Intent getTokenRegistrationIntent(final Activity activity, String domain, String preauth) {
+ public static Intent getTokenRegistrationIntent(final Activity activity, String domain, String preAuth) {
final Intent intent = new Intent(activity, MagicCreateActivity.class);
intent.putExtra(MagicCreateActivity.EXTRA_DOMAIN, domain);
- intent.putExtra(MagicCreateActivity.EXTRA_PRE_AUTH, preauth);
+ intent.putExtra(MagicCreateActivity.EXTRA_PRE_AUTH, preAuth);
return intent;
}
diff --git a/src/main/java/de/pixart/messenger/utils/XmppUri.java b/src/main/java/de/pixart/messenger/utils/XmppUri.java
index 322b1f760..9cb9c3a46 100644
--- a/src/main/java/de/pixart/messenger/utils/XmppUri.java
+++ b/src/main/java/de/pixart/messenger/utils/XmppUri.java
@@ -34,6 +34,7 @@ public class XmppUri {
public static final String ACTION_MESSAGE = "message";
public static final String ACTION_REGISTER = "register";
+ public static final String ACTION_ROSTER = "roster";
public static Pattern XMPP_URI = Patterns.XMPP_PATTERN;