Change summary
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 27
1 file changed, 16 insertions(+), 11 deletions(-)
Detailed changes
@@ -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)) {