aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-01-03 21:20:09 +0100
committerChristian Schneppe <christian@pix-art.de>2019-01-03 21:20:09 +0100
commit81a8eedc41cf453e672e07a2ce5d886343782e8e (patch)
treebd8c9b7b2da85d62d14204415ff2f5a055a3ba2c /src/main/java/de/pixart/messenger/services/XmppConnectionService.java
parent11898675220b94ae7531d61d45afced7f129aa3b (diff)
archive destoryed mucs when registering that bookmark has been removed
Diffstat (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java')
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java15
1 files changed, 13 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 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<Jid> previousBookmarks = account.getBookmarkedJids();
final HashMap<Jid, Bookmark> 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;