|
|
|
@ -11,7 +11,7 @@ const mongoose = require('mongoose');
|
|
|
|
|
const Sticker = mongoose.model('Sticker');
|
|
|
|
|
const User = mongoose.model('User');
|
|
|
|
|
|
|
|
|
|
const { SiteService, SiteError, SiteAsync } = require('../../lib/site-lib');
|
|
|
|
|
const { SiteService, SiteError } = require('../../lib/site-lib');
|
|
|
|
|
|
|
|
|
|
const MAX_CHANNEL_STICKERS = 50;
|
|
|
|
|
const MAX_USER_STICKERS = 10;
|
|
|
|
@ -144,18 +144,42 @@ class StickerService extends SiteService {
|
|
|
|
|
await Sticker.updateOne({ _id: sticker._id }, { $set: { status } });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Fetch and populate an Array of Sticker documents matching the input slugs.
|
|
|
|
|
*
|
|
|
|
|
* The returned Array may be smaller than the input Array (or empty) if some
|
|
|
|
|
* or none of the stickers have been deleted or simply don't exist.
|
|
|
|
|
*
|
|
|
|
|
* @param {Array} slugs an Array of sticker slugs
|
|
|
|
|
* @returns Array of populated matching Sticker documents
|
|
|
|
|
*/
|
|
|
|
|
async resolveStickerSlugs (slugs) {
|
|
|
|
|
const stickers = [ ];
|
|
|
|
|
await SiteAsync.each(slugs, async (slug) => {
|
|
|
|
|
const sticker = await Sticker.findOne({ slug: slug });
|
|
|
|
|
if (!sticker) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
stickers.push(sticker);
|
|
|
|
|
});
|
|
|
|
|
const stickers = await Sticker
|
|
|
|
|
.find({ slug: { $in: slugs } })
|
|
|
|
|
.populate(this.populateSticker)
|
|
|
|
|
.lean();
|
|
|
|
|
return stickers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Convert an array of sticker slugs to an array of sticker _id values. This
|
|
|
|
|
* is used during chat message ingest where the whole populated sticker just
|
|
|
|
|
* isn't needed and is all discarded.
|
|
|
|
|
*
|
|
|
|
|
* The returned Array may be smaller than the input Array (or empty) if some
|
|
|
|
|
* or none of the stickers have been deleted or simply don't exist.
|
|
|
|
|
*
|
|
|
|
|
* @param {Array} slugs an Array of sticker slugs
|
|
|
|
|
* @returns an Array of sticker IDs
|
|
|
|
|
*/
|
|
|
|
|
async resolveStickerSlugIds (slugs) {
|
|
|
|
|
const stickers = await Sticker
|
|
|
|
|
.find({ slug: { $in: slugs } })
|
|
|
|
|
.select('_id')
|
|
|
|
|
.lean();
|
|
|
|
|
return stickers.map((sticker) => sticker._id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async removeSticker (sticker) {
|
|
|
|
|
const stickerId = sticker._id;
|
|
|
|
|
this.log.info('creating sticker delete job', { stickerId });
|
|
|
|
@ -208,7 +232,7 @@ class StickerService extends SiteService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
logId: 'sticker',
|
|
|
|
|
logId: 'svc:sticker',
|
|
|
|
|
index: 'sticker',
|
|
|
|
|
className: 'StickerService',
|
|
|
|
|
create: (dtp) => { return new StickerService(dtp); },
|
|
|
|
|