aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-03-31 14:54:45 +0200
committerChristian Schneppe <christian@pix-art.de>2019-03-31 14:54:45 +0200
commit9fa77720e18b493e2199ed0d0f74a15126bf719e (patch)
tree6999e73875afba13eeb28cd829831c26ab7365a8 /src/main/java
parentda205a2ebf79641ce3c14dba3c2ecf3c671a403b (diff)
add ability to delete account also from server
fixes #315
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java5
-rw-r--r--src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java18
-rw-r--r--src/main/java/de/pixart/messenger/xmpp/XmppConnection.java16
3 files changed, 37 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
index caea57fc8..90b2784a5 100644
--- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
+++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
@@ -2354,6 +2354,11 @@ public class XmppConnectionService extends Service {
});
}
+ public void deleteAccountFromServer(final Account account) {
+ account.getXmppConnection().sendDeleteRequest();
+ deleteAccount(account);
+ }
+
public void deleteAccount(final Account account) {
synchronized (this.conversations) {
for (final Conversation conversation : conversations) {
diff --git a/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java b/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java
index fc5563df0..449e3871b 100644
--- a/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java
@@ -355,7 +355,7 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.mgmt_account_are_you_sure));
builder.setIconAttribute(android.R.attr.alertDialogIcon);
- builder.setMessage(getString(R.string.mgmt_account_delete_confirm_text));
+ builder.setMessage(getString(R.string.mgmt_account_delete_confirm_message));
builder.setPositiveButton(getString(R.string.delete),
(dialog, which) -> {
xmppConnectionService.deleteAccount(account);
@@ -364,7 +364,21 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
WelcomeActivity.launch(this);
}
});
- builder.setNegativeButton(getString(R.string.cancel), null);
+
+ builder.setNegativeButton(getString(R.string.delete_from_server),
+ (dialog, which) -> {
+ if (account.isOnlineAndConnected()) {
+ xmppConnectionService.deleteAccountFromServer(account);
+ selectedAccount = null;
+ if (xmppConnectionService.getAccounts().size() == 0 && Config.MAGIC_CREATE_DOMAIN != null) {
+ WelcomeActivity.launch(this);
+ }
+ } else {
+ informUser(R.string.go_online_to_delete);
+ }
+ });
+
+ builder.setNeutralButton(getString(R.string.cancel), null);
builder.create().show();
}
diff --git a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
index dd82ab7bb..8910ee418 100644
--- a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
+++ b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
@@ -1017,6 +1017,22 @@ public class XmppConnection implements Runnable {
}, true);
}
+ public void sendDeleteRequest() {
+ final IqPacket delete = new IqPacket(IqPacket.TYPE.SET);
+ delete.query("jabber:iq:register").addChild("remove");
+ delete.setTo(Jid.of(account.getServer()));
+ delete.setFrom(account.getJid().asBareJid());
+ Log.d(Config.LOGTAG, "Delete " + delete);
+ sendUnmodifiedIqPacket(delete, (account, packet) -> {
+ if (packet.getType() == IqPacket.TYPE.TIMEOUT) {
+ return;
+ }
+ if (packet.getType() == IqPacket.TYPE.ERROR) {
+ throw new StateChangingError(Account.State.DISABLED);
+ }
+ }, true);
+ }
+
private void setAccountCreationFailed(String url) {
if (url != null) {