Add support for animated stickers.

This commit is contained in:
Greyson Parrelli
2020-09-02 12:46:58 -04:00
committed by Cody Henthorne
parent bb708e0aa3
commit f4a199f621
26 changed files with 146 additions and 72 deletions

View File

@@ -218,11 +218,11 @@ public class SignalServiceMessageReceiver {
StickerProtos.Pack pack = StickerProtos.Pack.parseFrom(outputStream.toByteArray());
List<SignalServiceStickerManifest.StickerInfo> stickers = new ArrayList<>(pack.getStickersCount());
SignalServiceStickerManifest.StickerInfo cover = pack.hasCover() ? new SignalServiceStickerManifest.StickerInfo(pack.getCover().getId(), pack.getCover().getEmoji())
SignalServiceStickerManifest.StickerInfo cover = pack.hasCover() ? new SignalServiceStickerManifest.StickerInfo(pack.getCover().getId(), pack.getCover().getEmoji(), pack.getCover().getContentType())
: null;
for (StickerProtos.Pack.Sticker sticker : pack.getStickersList()) {
stickers.add(new SignalServiceStickerManifest.StickerInfo(sticker.getId(), sticker.getEmoji()));
stickers.add(new SignalServiceStickerManifest.StickerInfo(sticker.getId(), sticker.getEmoji(), sticker.getContentType()));
}
return new SignalServiceStickerManifest(pack.getTitle(), pack.getAuthor(), cover, stickers);

View File

@@ -660,6 +660,7 @@ public class SignalServiceMessageSender {
stickerBuilder.setPackId(ByteString.copyFrom(message.getSticker().get().getPackId()));
stickerBuilder.setPackKey(ByteString.copyFrom(message.getSticker().get().getPackKey()));
stickerBuilder.setStickerId(message.getSticker().get().getStickerId());
stickerBuilder.setEmoji(message.getSticker().get().getEmoji());
if (message.getSticker().get().getAttachment().isStream()) {
stickerBuilder.setData(createAttachmentPointer(message.getSticker().get().getAttachment().asStream()));

View File

@@ -736,9 +736,10 @@ public final class SignalServiceContent {
SignalServiceProtos.DataMessage.Sticker sticker = content.getSticker();
return new SignalServiceDataMessage.Sticker(sticker.getPackId().toByteArray(),
sticker.getPackKey().toByteArray(),
sticker.getStickerId(),
createAttachmentPointer(sticker.getData()));
sticker.getPackKey().toByteArray(),
sticker.getStickerId(),
sticker.getEmoji(),
createAttachmentPointer(sticker.getData()));
}
private static SignalServiceDataMessage.Reaction createReaction(SignalServiceProtos.DataMessage content) {

View File

@@ -449,12 +449,14 @@ public class SignalServiceDataMessage {
private final byte[] packId;
private final byte[] packKey;
private final int stickerId;
private final String emoji;
private final SignalServiceAttachment attachment;
public Sticker(byte[] packId, byte[] packKey, int stickerId, SignalServiceAttachment attachment) {
public Sticker(byte[] packId, byte[] packKey, int stickerId, String emoji, SignalServiceAttachment attachment) {
this.packId = packId;
this.packKey = packKey;
this.stickerId = stickerId;
this.emoji = emoji;
this.attachment = attachment;
}
@@ -470,6 +472,10 @@ public class SignalServiceDataMessage {
return stickerId;
}
public String getEmoji() {
return emoji;
}
public SignalServiceAttachment getAttachment() {
return attachment;
}

View File

@@ -39,10 +39,12 @@ public class SignalServiceStickerManifest {
public static final class StickerInfo {
private final int id;
private final String emoji;
private final String contentType;
public StickerInfo(int id, String emoji) {
this.id = id;
this.emoji = emoji;
public StickerInfo(int id, String emoji, String contentType) {
this.id = id;
this.emoji = emoji;
this.contentType = contentType;
}
public int getId() {
@@ -52,5 +54,9 @@ public class SignalServiceStickerManifest {
public String getEmoji() {
return emoji;
}
public String getContentType() {
return contentType;
}
}
}

View File

@@ -215,6 +215,7 @@ message DataMessage {
optional bytes packKey = 2;
optional uint32 stickerId = 3;
optional AttachmentPointer data = 4;
optional string emoji = 5;
}
message Reaction {

View File

@@ -12,8 +12,9 @@ option java_outer_classname = "StickerProtos";
message Pack {
message Sticker {
optional uint32 id = 1;
optional string emoji = 2;
optional uint32 id = 1;
optional string emoji = 2;
optional string contentType = 3;
}
optional string title = 1;