From 81a8eedc41cf453e672e07a2ce5d886343782e8e Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Thu, 3 Jan 2019 21:20:09 +0100 Subject: archive destoryed mucs when registering that bookmark has been removed --- .../pixart/messenger/services/XmppConnectionService.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java') diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index 644325e2c..fbc355dfa 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -1607,6 +1607,7 @@ public class XmppConnectionService extends Service { } public void processBookmarks(Account account, Element storage, final boolean pep) { + final Set previousBookmarks = account.getBookmarkedJids(); final HashMap bookmarks = new HashMap<>(); final boolean synchronizeWithBookmarks = synchronizeWithBookmarks(); if (storage != null) { @@ -1620,6 +1621,7 @@ public class XmppConnectionService extends Service { if (bookmark.getJid() == null) { continue; } + previousBookmarks.remove(bookmark.getJid().asBareJid()); Conversation conversation = find(bookmark); if (conversation != null) { if (conversation.getMode() != Conversation.MODE_MULTI) { @@ -1636,6 +1638,16 @@ public class XmppConnectionService extends Service { } } } + if (pep && synchronizeWithBookmarks) { + Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": " + previousBookmarks.size() + " bookmarks have been removed"); + for (Jid jid : previousBookmarks) { + final Conversation conversation = find(account, jid); + if (conversation != null && conversation.getMucOptions().getError() == MucOptions.Error.DESTROYED) { + Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": archiving destroyed conference (" + conversation.getJid() + ") after receiving pep"); + archiveConversation(conversation, false); + } + } + } } account.setBookmarks(new CopyOnWriteArrayList<>(bookmarks.values())); } @@ -1673,8 +1685,7 @@ public class XmppConnectionService extends Service { } private void pushNodeAndEnforcePublishOptions(final Account account, final String node, final Element element, final Bundle options, final boolean retry) { - IqPacket packet = mIqGenerator.publishElement(node, element, options); - Log.d(Config.LOGTAG, packet.toString()); + final IqPacket packet = mIqGenerator.publishElement(node, element, options); sendIqPacket(account, packet, (a, response) -> { if (response.getType() == IqPacket.TYPE.RESULT) { return; -- cgit v1.2.3