]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/stickers/LegacyStickerStore.java
dd044536c7e99d057492484448a2415f47c8a776
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / stickers / LegacyStickerStore.java
1 package org.asamk.signal.manager.storage.stickers;
2
3 import org.asamk.signal.manager.api.StickerPackId;
4
5 import java.util.Base64;
6 import java.util.HashSet;
7 import java.util.List;
8 import java.util.Objects;
9
10 public class LegacyStickerStore {
11
12 public static void migrate(Storage storage, StickerStore stickerStore) {
13 final var packIds = new HashSet<StickerPackId>();
14 final var stickers = storage.stickers.stream().map(s -> {
15 var packId = StickerPackId.deserialize(Base64.getDecoder().decode(s.packId));
16 if (packIds.contains(packId)) {
17 // Remove legacy duplicate packIds ...
18 return null;
19 }
20 packIds.add(packId);
21 var packKey = Base64.getDecoder().decode(s.packKey);
22 var installed = s.installed;
23 return new StickerPack(-1, packId, packKey, installed);
24 }).filter(Objects::nonNull).toList();
25
26 stickerStore.addLegacyStickers(stickers);
27 }
28
29 public record Storage(List<Sticker> stickers) {
30
31 private record Sticker(String packId, String packKey, boolean installed) {
32
33 }
34 }
35 }