/* * Copyright (C) 2015 Actor LLC. <https://actor.im> */ package im.actor.core.entity; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; import im.actor.core.api.ApiImageLocation; import im.actor.core.api.ApiStickerDescriptor; import im.actor.core.api.ApiStickerMessage; import im.actor.core.entity.content.internal.AbsLocalContent; import im.actor.runtime.bser.BserCreator; import im.actor.runtime.bser.BserValues; import im.actor.runtime.bser.BserWriter; import im.actor.runtime.storage.ListEngineItem; public class Sticker extends WrapperEntity<ApiStickerDescriptor> { public static final BserCreator<Sticker> CREATOR = Sticker::new; private static final int RECORD_ID = 10; @NotNull private FileReference image128; @NotNull private ApiImageLocation image128Location; @Nullable private FileReference image256; @Nullable private ApiImageLocation image256Location; @Nullable private FileReference image512; @Nullable private ApiImageLocation image512Location; private int id; @Nullable private String emoji; @Nullable private Integer collectionId; @Nullable private Long collectionAccessHash; public Sticker(ApiStickerDescriptor descriptor, Integer collectionId, Long collectionAccessHash) { super(RECORD_ID, descriptor); this.collectionId = collectionId; this.collectionAccessHash = collectionAccessHash; } public Sticker(byte[] data) throws IOException { this(); load(data); } private Sticker() { super(RECORD_ID); } @Override protected void applyWrapped(@NotNull ApiStickerDescriptor wrapped) { emoji = wrapped.getEmoji(); id = wrapped.getId(); image128Location = wrapped.getImage128(); image128 = new FileReference(image128Location.getFileLocation(), "sticker.webp", image128Location.getFileSize()); if (wrapped.getImage256() != null) { image256Location = wrapped.getImage256(); image256 = new FileReference(image256Location.getFileLocation(), "sticker.webp", image256Location.getFileSize()); } if (wrapped.getImage512() != null) { image512Location = wrapped.getImage512(); image512 = new FileReference(wrapped.getImage512().getFileLocation(), "sticker.webp", wrapped.getImage512().getFileSize()); } } @NotNull public FileReference getImage128() { return image128; } @Nullable public FileReference getImage256() { return image256; } @Nullable public FileReference getImage512() { return image512; } public int getId() { return id; } @Nullable public String getEmoji() { return emoji; } @Nullable public Integer getCollectionId() { return collectionId; } @Nullable public Long getCollectionAccessHash() { return collectionAccessHash; } public ApiStickerMessage toMessage() { return new ApiStickerMessage(id, null, image512Location, image256Location, collectionId, collectionAccessHash); } public ApiStickerDescriptor toApi() { return getWrapped(); } @NotNull @Override protected ApiStickerDescriptor createInstance() { return new ApiStickerDescriptor(); } }