AbstractBookmarkManager.java

 1package eu.siacs.conversations.xmpp.manager;
 2
 3import android.util.Log;
 4import eu.siacs.conversations.Config;
 5import eu.siacs.conversations.entities.Account;
 6import eu.siacs.conversations.entities.Bookmark;
 7import eu.siacs.conversations.entities.Conversation;
 8import eu.siacs.conversations.services.XmppConnectionService;
 9import eu.siacs.conversations.xmpp.Jid;
10import eu.siacs.conversations.xmpp.XmppConnection;
11import java.util.Collection;
12import java.util.Map;
13import java.util.Set;
14
15public class AbstractBookmarkManager extends AbstractManager {
16
17    private final XmppConnectionService service;
18
19    protected AbstractBookmarkManager(
20            final XmppConnectionService service, final XmppConnection connection) {
21        super(service, connection);
22        this.service = service;
23    }
24
25    // TODO rename to setBookmarks?
26    public void processBookmarksInitial(final Map<Jid, Bookmark> bookmarks, final boolean pep) {
27        final var account = getAccount();
28        // TODO we can internalize this getBookmarkedJid
29        final Set<Jid> previousBookmarks = account.getBookmarkedJids();
30        for (final Bookmark bookmark : bookmarks.values()) {
31            previousBookmarks.remove(bookmark.getJid().asBareJid());
32            service.processModifiedBookmark(bookmark, pep);
33        }
34        if (pep) {
35            this.processDeletedBookmarks(account, previousBookmarks);
36        }
37        account.setBookmarks(bookmarks);
38    }
39
40    public void processDeletedBookmarks(final Account account, final Collection<Jid> bookmarks) {
41        Log.d(
42                Config.LOGTAG,
43                account.getJid().asBareJid()
44                        + ": "
45                        + bookmarks.size()
46                        + " bookmarks have been removed");
47        for (final Jid bookmark : bookmarks) {
48            processDeletedBookmark(account, bookmark);
49        }
50    }
51
52    public void processDeletedBookmark(final Account account, final Jid jid) {
53        final Conversation conversation = service.find(account, jid);
54        if (conversation == null) {
55            return;
56        }
57        Log.d(
58                Config.LOGTAG,
59                account.getJid().asBareJid() + ": archiving MUC " + jid + " after PEP update");
60        this.service.archiveConversation(conversation, false);
61    }
62}