X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/404063a080a1a8784a1111304cc6b90b58362923..e70463d7b8a9ea921028dc2a0cf77f90998f6831:/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java diff --git a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java index 708b0226..fdb28929 100644 --- a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java @@ -29,6 +29,7 @@ import org.asamk.signal.manager.api.RecipientIdentifier; import org.asamk.signal.manager.api.SendGroupMessageResults; import org.asamk.signal.manager.api.SendMessageResult; import org.asamk.signal.manager.api.SendMessageResults; +import org.asamk.signal.manager.api.StickerPack; import org.asamk.signal.manager.api.TypingAction; import org.asamk.signal.manager.api.UnregisteredRecipientException; import org.asamk.signal.manager.api.UpdateGroup; @@ -682,6 +683,29 @@ public class ManagerImpl implements Manager { } } + @Override + public List getStickerPacks() { + final var stickerPackStore = context.getStickerPackStore(); + return account.getStickerStore().getStickerPacks().stream().map(pack -> { + if (stickerPackStore.existsStickerPack(pack.getPackId())) { + try { + final var manifest = stickerPackStore.retrieveManifest(pack.getPackId()); + return new StickerPack(pack.getPackId(), + pack.getPackKey(), + pack.isInstalled(), + manifest.title(), + manifest.author(), + java.util.Optional.ofNullable(manifest.cover() == null ? null : manifest.cover().toApi()), + manifest.stickers().stream().map(JsonStickerPack.JsonSticker::toApi).toList()); + } catch (Exception e) { + logger.warn("Failed to read local sticker pack manifest: {}", e.getMessage(), e); + } + } + + return new StickerPack(pack.getPackId(), pack.getPackKey(), pack.isInstalled()); + }).toList(); + } + @Override public void requestAllSyncData() throws IOException { context.getSyncHelper().requestAllSyncData();