51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
const stickerPacks = {};
|
|
stickerPacks.ordering = [];
|
|
const stickerCodeMap = {};
|
|
|
|
class Stickers {
|
|
constructor() {
|
|
}
|
|
|
|
loadStickersFromConfig(config) {
|
|
const stickerConfig = config.shortCodeStickers;
|
|
for (const pack of stickerConfig.packs) {
|
|
stickerPacks[pack.name] = [];
|
|
stickerPacks.ordering.push(pack.name);
|
|
for (const sticker of pack.stickers) {
|
|
const stickerName = sticker.split(".")[0];
|
|
const stickerUrl = stickerConfig.baseUrl + pack.name + "/" + sticker;
|
|
stickerPacks[pack.name].push({ image: stickerUrl, name: stickerName });
|
|
stickerCodeMap[":" + pack.name + "-" + stickerName + ":"] = stickerUrl;
|
|
}
|
|
}
|
|
}
|
|
|
|
isStickerShortcode(messageBody) {
|
|
if (messageBody && messageBody.startsWith(":") && messageBody.startsWith(":") && messageBody.length >= 5) {
|
|
const image = this.getStickerImage(messageBody);
|
|
return image != undefined && image != null;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
getStickerShortcode(pack, sticker) {
|
|
return ":" + pack + "-" + sticker.name + ":";
|
|
}
|
|
|
|
getPacks() {
|
|
return stickerPacks.ordering;
|
|
}
|
|
|
|
getStickerImage(messageBody) {
|
|
if (!messageBody) return null;
|
|
if (messageBody.length < 5 || !messageBody.startsWith(":") || !messageBody.endsWith(":")) return null;
|
|
return stickerCodeMap[messageBody];
|
|
}
|
|
|
|
stickersInPack(pack) {
|
|
return stickerPacks[pack];
|
|
}
|
|
}
|
|
|
|
var gStickers = new Stickers();
|
|
export default gStickers;
|