account deletion: only attempt to delete omemo id when connected

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 27 
1 file changed, 16 insertions(+), 11 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -2198,19 +2198,24 @@ public class XmppConnectionService extends Service {
 	}
 
 	public void deleteAccount(final Account account) {
+	    final boolean connected = account.getStatus() == Account.State.ONLINE;
 		synchronized (this.conversations) {
-		    account.getAxolotlService().deleteOmemoIdentity();
-			for (final Conversation conversation : conversations) {
-				if (conversation.getAccount() == account) {
-					if (conversation.getMode() == Conversation.MODE_MULTI) {
-						leaveMuc(conversation);
-					}
-					conversations.remove(conversation);
-					mNotificationService.clear(conversation);
-				}
-			}
+		    if (connected) {
+                account.getAxolotlService().deleteOmemoIdentity();
+            }
+            for (final Conversation conversation : conversations) {
+                if (conversation.getAccount() == account) {
+                    if (conversation.getMode() == Conversation.MODE_MULTI) {
+                        if (connected) {
+                            leaveMuc(conversation);
+                        }
+                    }
+                    conversations.remove(conversation);
+                    mNotificationService.clear(conversation);
+                }
+            }
 			if (account.getXmppConnection() != null) {
-				new Thread(() -> disconnect(account, false)).start();
+				new Thread(() -> disconnect(account, !connected)).start();
 			}
 			final Runnable runnable = () -> {
 				if (!databaseBackend.deleteAccount(account)) {