unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at angular21 47 lines 1.3 kB view raw
1import { Emoji, UserEmojiRelation } from "../../models/index.js"; 2import { v4 as uuidv4, v6 as uuidv6 } from "uuid"; 3 4async function processUserEmojis(user: any, fediEmojis: any[]) { 5 await UserEmojiRelation.destroy({ 6 where: { 7 userId: user.id, 8 }, 9 }); 10 await user.removeEmojis(); 11 await user.save(); 12 const emojis: any[] = []; 13 if (fediEmojis) { 14 for await (const emoji of fediEmojis) { 15 const emojiId = emoji.id ? emoji.id : emoji.icon?.url; 16 const emojiName = emoji.name.startsWith(":") 17 ? emoji.name 18 : `:${emoji.name}:`; 19 let emojiToAdd = await Emoji.findByPk(emojiId); 20 if ( 21 emojiToAdd && 22 new Date(emojiToAdd.updatedAt).getTime() < 23 new Date(emoji.updated).getTime() 24 ) { 25 emojiToAdd.name = emojiName; 26 emojiToAdd.updatedAt = new Date(); 27 emojiToAdd.url = emoji.icon.url; 28 await emojiToAdd.save(); 29 } 30 if (!emojiToAdd) { 31 emojiToAdd = await Emoji.create({ 32 id: emojiId, 33 name: emojiName, 34 url: emoji.icon.url, 35 external: true, 36 uuid: uuidv4(), 37 }); 38 } 39 emojis.push(emojiToAdd); 40 } 41 } 42 return await user.setEmojis([ 43 ...new Set(emojis.map((emoji: any) => emoji.id)), 44 ]); 45} 46 47export { processUserEmojis };