aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/utils
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-11-15 20:44:00 +0100
committerChristian Schneppe <christian@pix-art.de>2018-11-15 20:50:54 +0100
commitba3e6ffba2d27470c448be3c3e28c06b8932b8ee (patch)
tree623156f1dffea277483362499ec6cf3509445a39 /src/main/java/de/pixart/messenger/utils
parentb81313d1db8261ba76ecbe0c2bc16ac26edac311 (diff)
refactored some ManageAccount, WelcomeActivity and a few other things
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/utils/AccountUtils.java59
-rw-r--r--src/main/java/de/pixart/messenger/utils/ExceptionHelper.java15
-rw-r--r--src/main/java/de/pixart/messenger/utils/SignupUtils.java47
-rw-r--r--src/main/java/de/pixart/messenger/utils/XmppUri.java2
4 files changed, 111 insertions, 12 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/AccountUtils.java b/src/main/java/de/pixart/messenger/utils/AccountUtils.java
new file mode 100644
index 000000000..430ebb573
--- /dev/null
+++ b/src/main/java/de/pixart/messenger/utils/AccountUtils.java
@@ -0,0 +1,59 @@
+package de.pixart.messenger.utils;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.widget.Toast;
+
+import java.util.List;
+
+import de.pixart.messenger.R;
+import de.pixart.messenger.entities.Account;
+import de.pixart.messenger.services.XmppConnectionService;
+
+public class AccountUtils {
+
+ public static final Class MANAGE_ACCOUNT_ACTIVITY;
+
+ static {
+ MANAGE_ACCOUNT_ACTIVITY = getManageAccountActivityClass();
+ }
+
+
+ public static Account getFirstEnabled(XmppConnectionService service) {
+ final List<Account> accounts = service.getAccounts();
+ for (Account account : accounts) {
+ if (!account.isOptionSet(Account.OPTION_DISABLED)) {
+ return account;
+ }
+ }
+ return null;
+ }
+
+ public static Account getPendingAccount(XmppConnectionService service) {
+ Account pending = null;
+ for (Account account : service.getAccounts()) {
+ if (!account.isOptionSet(Account.OPTION_LOGGED_IN_SUCCESSFULLY)) {
+ pending = account;
+ } else {
+ return null;
+ }
+ }
+ return pending;
+ }
+
+ public static void launchManageAccounts(Activity activity) {
+ if (MANAGE_ACCOUNT_ACTIVITY != null) {
+ activity.startActivity(new Intent(activity, MANAGE_ACCOUNT_ACTIVITY));
+ } else {
+ Toast.makeText(activity, R.string.feature_not_implemented, Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ private static Class getManageAccountActivityClass() {
+ try {
+ return Class.forName("de.pixart.messenger.ui.ManageAccountActivity");
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java b/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java
index ff2614840..a95278723 100644
--- a/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java
+++ b/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java
@@ -26,6 +26,7 @@ import de.pixart.messenger.entities.Conversation;
import de.pixart.messenger.entities.Message;
import de.pixart.messenger.services.XmppConnectionService;
import de.pixart.messenger.ui.XmppActivity;
+import rocks.xmpp.addr.Jid;
public class ExceptionHelper {
private static final String FILENAME = "stacktrace.txt";
@@ -49,18 +50,10 @@ public class ExceptionHelper {
if (!crashreport || Config.BUG_REPORTS == null) {
return false;
}
- List<Account> accounts = service.getAccounts();
- Account account = null;
- for (int i = 0; i < accounts.size(); ++i) {
- if (accounts.get(i).isEnabled()) {
- account = accounts.get(i);
- break;
- }
- }
+ final Account account = AccountUtils.getFirstEnabled(service);
if (account == null) {
return false;
}
- final Account finalAccount = account;
FileInputStream file = activity.openFileInput(FILENAME);
InputStreamReader inputStreamReader = new InputStreamReader(file);
BufferedReader stacktrace = new BufferedReader(inputStreamReader);
@@ -91,8 +84,8 @@ public class ExceptionHelper {
builder.setTitle(activity.getString(R.string.crash_report_title));
builder.setMessage(activity.getText(R.string.crash_report_message));
builder.setPositiveButton(activity.getText(R.string.send_now), (dialog, which) -> {
- Log.d(Config.LOGTAG, "using account=" + finalAccount.getJid().asBareJid() + " to send in stack trace");
- Conversation conversation = service.findOrCreateConversation(finalAccount, Config.BUG_REPORTS, false, true);
+ Log.d(Config.LOGTAG, "using account=" + account.getJid().asBareJid() + " to send in stack trace");
+ Conversation conversation = service.findOrCreateConversation(account, Config.BUG_REPORTS, false, true);
Message message = new Message(conversation, report.toString(), Message.ENCRYPTION_NONE);
service.sendMessage(message);
});
diff --git a/src/main/java/de/pixart/messenger/utils/SignupUtils.java b/src/main/java/de/pixart/messenger/utils/SignupUtils.java
new file mode 100644
index 000000000..81959c929
--- /dev/null
+++ b/src/main/java/de/pixart/messenger/utils/SignupUtils.java
@@ -0,0 +1,47 @@
+package de.pixart.messenger.utils;
+
+import android.app.Activity;
+import android.content.Intent;
+
+import de.pixart.messenger.Config;
+import de.pixart.messenger.entities.Account;
+import de.pixart.messenger.services.XmppConnectionService;
+import de.pixart.messenger.ui.ConversationsActivity;
+import de.pixart.messenger.ui.EditAccountActivity;
+import de.pixart.messenger.ui.ManageAccountActivity;
+import de.pixart.messenger.ui.StartConversationActivity;
+import de.pixart.messenger.ui.WelcomeActivity;
+
+public class SignupUtils {
+
+ public static Intent getSignUpIntent(final Activity activity) {
+ Intent intent = new Intent(activity, WelcomeActivity.class);
+ StartConversationActivity.addInviteUri(intent, activity.getIntent());
+ return intent;
+ }
+
+ public static Intent getRedirectionIntent(final ConversationsActivity activity) {
+ final XmppConnectionService service = activity.xmppConnectionService;
+ Account pendingAccount = AccountUtils.getPendingAccount(service);
+ Intent intent;
+ if (pendingAccount != null) {
+ intent = new Intent(activity, EditAccountActivity.class);
+ intent.putExtra("jid", pendingAccount.getJid().asBareJid().toString());
+ } else {
+ if (service.getAccounts().size() == 0) {
+ if (Config.X509_VERIFICATION) {
+ intent = new Intent(activity, ManageAccountActivity.class);
+ } else if (Config.MAGIC_CREATE_DOMAIN != null) {
+ intent = getSignUpIntent(activity);
+ } else {
+ intent = new Intent(activity, EditAccountActivity.class);
+ }
+ } else {
+ intent = new Intent(activity, StartConversationActivity.class);
+ }
+ }
+ intent.putExtra("init", true);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ return intent;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/de/pixart/messenger/utils/XmppUri.java b/src/main/java/de/pixart/messenger/utils/XmppUri.java
index a44c9a174..9c0b3e666 100644
--- a/src/main/java/de/pixart/messenger/utils/XmppUri.java
+++ b/src/main/java/de/pixart/messenger/utils/XmppUri.java
@@ -184,7 +184,7 @@ public class XmppUri {
public Jid getJid() {
try {
- return this.jid == null ? null : Jid.of(this.jid.toLowerCase());
+ return this.jid == null ? null : Jid.of(this.jid);
} catch (IllegalArgumentException e) {
return null;
}