aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/parser/MessageParser.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian.schneppe@pix-art.de>2019-10-26 18:10:48 +0200
committerChristian Schneppe <christian.schneppe@pix-art.de>2019-10-26 18:10:48 +0200
commit35df965b58a9505f27be34c3a68309211c2e6d88 (patch)
tree0747dfdf4d3421249489d4b3140195d053cf7c2f /src/main/java/de/pixart/messenger/parser/MessageParser.java
parent8d7727fcdc400dcd05babe4ec9b78fa0d1f56717 (diff)
Bookmarks2: support retraction
Diffstat (limited to 'src/main/java/de/pixart/messenger/parser/MessageParser.java')
-rw-r--r--src/main/java/de/pixart/messenger/parser/MessageParser.java28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/main/java/de/pixart/messenger/parser/MessageParser.java b/src/main/java/de/pixart/messenger/parser/MessageParser.java
index 0fc7e8bac..8e96d9b6f 100644
--- a/src/main/java/de/pixart/messenger/parser/MessageParser.java
+++ b/src/main/java/de/pixart/messenger/parser/MessageParser.java
@@ -12,11 +12,11 @@ import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -319,14 +319,30 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
if (account.getXmppConnection().getFeatures().bookmarksConversion()) {
final Element i = items.findChild("item");
final Element storage = i == null ? null : i.findChild("storage", Namespace.BOOKMARKS);
- new Thread(() -> {
- Collection<Bookmark> bookmarks = Bookmark.parseFromStorage(storage, account);
- mXmppConnectionService.processBookmarksInitial(account, bookmarks, true);
- Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": processing bookmark PEP event");
- }).start();
+ Map<Jid, Bookmark> bookmarks = Bookmark.parseFromStorage(storage, account);
+ mXmppConnectionService.processBookmarksInitial(account, bookmarks, true);
+ Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": processing bookmark PEP event");
} else {
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": ignoring bookmark PEP event because bookmark conversion was not detected");
}
+ } else if (Namespace.BOOKMARK.equals(node) && account.getJid().asBareJid().equals(from)) {
+ final Element item = items.findChild("item");
+ final Element retract = items.findChild("retract");
+ if (item != null) {
+ final Bookmark bookmark = Bookmark.parseFromItem(item, account);
+ if (bookmark != null) {
+ //TODO find conversation
+ account.putBookmark(bookmark);
+ //TODO handle autojoin
+ }
+ }
+ if (retract != null) {
+ final Jid id = InvalidJid.getNullForInvalid(retract.getAttributeAsJid("id"));
+ if (id != null) {
+ account.removeBookmark(id);
+ Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": deleted bookmark for " + id);
+ }
+ }
} else {
Log.d(Config.LOGTAG, account.getJid().asBareJid() + " received pubsub notification for node=" + node);
}