]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java
Add addStickerPack command
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / internal / ManagerImpl.java
index 36051333a379a888ac853b2a66067629a86bbc20..3c7649e9f1464a8d1034ec2df16713d4831f4fd8 100644 (file)
@@ -72,6 +72,7 @@ import org.asamk.signal.manager.util.AttachmentUtils;
 import org.asamk.signal.manager.util.KeyUtils;
 import org.asamk.signal.manager.util.MimeUtils;
 import org.asamk.signal.manager.util.StickerUtils;
+import org.signal.libsignal.protocol.InvalidMessageException;
 import org.signal.libsignal.usernames.BaseUsernameException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -891,10 +892,25 @@ public class ManagerImpl implements Manager {
 
         var sticker = new StickerPack(packId, packKey);
         account.getStickerStore().addStickerPack(sticker);
+        context.getSyncHelper().sendStickerOperationsMessage(List.of(sticker), List.of());
 
         return new StickerPackUrl(packId, packKey);
     }
 
+    @Override
+    public void installStickerPack(StickerPackUrl url) throws IOException {
+        final var packId = url.getPackId();
+        final var packKey = url.getPackKey();
+        try {
+            context.getStickerHelper().retrieveStickerPack(packId, packKey);
+        } catch (InvalidMessageException e) {
+            throw new IOException(e);
+        }
+
+        final var sticker = context.getStickerHelper().addOrUpdateStickerPack(packId, packKey, true);
+        context.getSyncHelper().sendStickerOperationsMessage(List.of(sticker), List.of());
+    }
+
     @Override
     public List<org.asamk.signal.manager.api.StickerPack> getStickerPacks() {
         final var stickerPackStore = context.getStickerPackStore();