From 945c9e733561c0b6e4e2809d05c0a9e29dd30ee5 Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Mon, 14 Aug 2023 22:42:12 -0600 Subject: [PATCH] fedimbed: link emotes --- src/modules/fedimbed.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/modules/fedimbed.js b/src/modules/fedimbed.js index ce12960..ee690ce 100644 --- a/src/modules/fedimbed.js +++ b/src/modules/fedimbed.js @@ -112,7 +112,11 @@ async function processUrl(msg, url, spoiler = false) { const images = []; const videos = []; const audios = []; - let content, cw, author, timestamp; + let content, + cw, + author, + timestamp, + emotes = []; // Fetch post let rawPostData; @@ -296,6 +300,9 @@ async function processUrl(msg, url, spoiler = false) { if (!spoiler && postData2.sensitive) { spoiler = true; } + emotes = postData2.emojis + .filter((x) => !x.name.endsWith("@.")) + .map((x) => ({name: `:${x.name}:`, url: x.url})); const attachments = postData2.media_attachments ?? postData2.files; if (attachments) { @@ -347,8 +354,6 @@ async function processUrl(msg, url, spoiler = false) { } } - // if (platform == "gotosocial") console.log(postData); - content = postData._misskey_content ?? postData.source?.content ?? postData.content; cw = postData.summary; @@ -356,6 +361,9 @@ async function processUrl(msg, url, spoiler = false) { if (!spoiler && postData.sensitive) { spoiler = true; } + emotes = postData.tag + .filter((x) => !!x.icon) + .map((x) => ({name: x.name, url: x.icon.url})); // NB: gts doesnt send singular attachments as areay const attachments = Array.isArray(postData.attachment) @@ -428,6 +436,10 @@ async function processUrl(msg, url, spoiler = false) { content = content.replace(/(<([^>]+)>)/gi, ""); content = parseHtmlEntities(content); + for (const emote of emotes) { + content = content.replaceAll(emote.name, `[${emote.name}](${emote.url})`); + } + cw = cw.replace(/(<([^>]+)>)/gi, ""); cw = parseHtmlEntities(cw);