PrivateStorageManager.java

 1package eu.siacs.conversations.xmpp.manager;
 2
 3import android.util.Log;
 4import androidx.annotation.NonNull;
 5import com.google.common.util.concurrent.FutureCallback;
 6import com.google.common.util.concurrent.Futures;
 7import com.google.common.util.concurrent.MoreExecutors;
 8import eu.siacs.conversations.Config;
 9import eu.siacs.conversations.entities.Bookmark;
10import eu.siacs.conversations.services.XmppConnectionService;
11import eu.siacs.conversations.xmpp.Jid;
12import eu.siacs.conversations.xmpp.XmppConnection;
13import im.conversations.android.xmpp.model.bookmark.Storage;
14import im.conversations.android.xmpp.model.stanza.Iq;
15import im.conversations.android.xmpp.model.storage.PrivateStorage;
16import java.util.Map;
17
18public class PrivateStorageManager extends AbstractBookmarkManager {
19
20    public PrivateStorageManager(final XmppConnectionService service, XmppConnection connection) {
21        super(service, connection);
22    }
23
24    public void fetchBookmarks() {
25        final var iq = new Iq(Iq.Type.GET);
26        final var privateStorage = iq.addExtension(new PrivateStorage());
27        privateStorage.addExtension(new Storage());
28        final var future = this.connection.sendIqPacket(iq);
29        Futures.addCallback(
30                future,
31                new FutureCallback<Iq>() {
32                    @Override
33                    public void onSuccess(Iq result) {
34                        final var privateStorage = result.getExtension(PrivateStorage.class);
35                        if (privateStorage == null) {
36                            return;
37                        }
38                        final var bookmarkStorage = privateStorage.getExtension(Storage.class);
39                        final Map<Jid, Bookmark> bookmarks =
40                                Bookmark.parseFromStorage(bookmarkStorage, getAccount());
41                        processBookmarksInitial(bookmarks, false);
42                    }
43
44                    @Override
45                    public void onFailure(@NonNull Throwable t) {
46                        Log.d(
47                                Config.LOGTAG,
48                                getAccount().getJid().asBareJid()
49                                        + ": could not fetch bookmark from private storage",
50                                t);
51                    }
52                },
53                MoreExecutors.directExecutor());
54    }
55}