diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-11-15 20:44:00 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-11-15 20:50:54 +0100 |
commit | ba3e6ffba2d27470c448be3c3e28c06b8932b8ee (patch) | |
tree | 623156f1dffea277483362499ec6cf3509445a39 /src/main/java/de/pixart/messenger/utils | |
parent | b81313d1db8261ba76ecbe0c2bc16ac26edac311 (diff) |
refactored some ManageAccount, WelcomeActivity and a few other things
Diffstat (limited to 'src/main/java/de/pixart/messenger/utils')
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; } |