aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/XmppConnectionService.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/services/XmppConnectionService.java
parent8d7727fcdc400dcd05babe4ec9b78fa0d1f56717 (diff)
Bookmarks2: support retraction
Diffstat (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java')
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
index 77f3bb78f..b47fbdf1b 100644
--- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
+++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
@@ -1804,7 +1804,7 @@ public class XmppConnectionService extends Service {
if (response.getType() == IqPacket.TYPE.RESULT) {
final Element query1 = response.query();
final Element storage = query1.findChild("storage", "storage:bookmarks");
- Collection<Bookmark> bookmarks = Bookmark.parseFromStorage(storage, account);
+ Map<Jid, Bookmark> bookmarks = Bookmark.parseFromStorage(storage, account);
processBookmarksInitial(a, bookmarks, false);
} else {
Log.d(Config.LOGTAG, a.getJid().asBareJid() + ": could not fetch bookmarks");
@@ -1820,17 +1820,17 @@ public class XmppConnectionService extends Service {
public void onIqPacketReceived(final Account account, final IqPacket response) {
if (response.getType() == IqPacket.TYPE.RESULT) {
final Element pubsub = response.findChild("pubsub", Namespace.PUBSUB);
- final Collection<Bookmark> bookmarks = Bookmark.parseFromPubsub(pubsub, account);
+ final Map<Jid, Bookmark> bookmarks = Bookmark.parseFromPubsub(pubsub, account);
processBookmarksInitial(account, bookmarks, true);
}
}
});
}
- public void processBookmarksInitial(Account account, Collection<Bookmark> bookmarks, final boolean pep) {
+ public void processBookmarksInitial(Account account, Map<Jid, Bookmark> bookmarks, final boolean pep) {
final Set<Jid> previousBookmarks = account.getBookmarkedJids();
final boolean synchronizeWithBookmarks = synchronizeWithBookmarks();
- for (Bookmark bookmark : bookmarks) {
+ for (Bookmark bookmark : bookmarks.values()) {
previousBookmarks.remove(bookmark.getJid().asBareJid());
Conversation conversation = find(bookmark);
if (conversation != null) {
@@ -1857,10 +1857,11 @@ public class XmppConnectionService extends Service {
}
}
}
- account.setBookmarks(new CopyOnWriteArrayList<>(bookmarks));
+ account.setBookmarks(bookmarks);
}
public void createBookmark(final Account account, final Bookmark bookmark) {
+ account.putBookmark(bookmark);
final XmppConnection connection = account.getXmppConnection();
if (connection.getFeatures().bookmarks2()) {
final Element item = mIqGenerator.publishBookmarkItem(bookmark);
@@ -1873,6 +1874,7 @@ public class XmppConnectionService extends Service {
}
public void deleteBookmark(final Account account, final Bookmark bookmark) {
+ account.removeBookmark(bookmark);
final XmppConnection connection = account.getXmppConnection();
if (connection.getFeatures().bookmarksConversion()) {
IqPacket request = mIqGenerator.deleteItem(Namespace.BOOKMARK, bookmark.getJid().asBareJid().toEscapedString());
@@ -2358,12 +2360,11 @@ public class XmppConnectionService extends Service {
getMessageArchiveService().kill(conversation);
if (conversation.getMode() == Conversation.MODE_MULTI) {
if (conversation.getAccount().getStatus() == Account.State.ONLINE) {
- Bookmark bookmark = conversation.getBookmark();
+ final Bookmark bookmark = conversation.getBookmark();
if (maySynchronizeWithBookmarks && bookmark != null && synchronizeWithBookmarks()) {
if (conversation.getMucOptions().getError() == MucOptions.Error.DESTROYED) {
Account account = bookmark.getAccount();
bookmark.setConversation(null);
- account.getBookmarks().remove(bookmark);
deleteBookmark(account, bookmark);
} else if (bookmark.autojoin()) {
bookmark.setAutojoin(false);
@@ -4860,7 +4861,6 @@ public class XmppConnectionService extends Service {
bookmark.setBookmarkName(name);
}
bookmark.setAutojoin(getPreferences().getBoolean("autojoin", getResources().getBoolean(R.bool.autojoin)));
- account.getBookmarks().add(bookmark);
createBookmark(account, bookmark);
bookmark.setConversation(conversation);
}