From 21899ccf3f3360ceeb03f49a6433b5e46faef9be Mon Sep 17 00:00:00 2001 From: KMY Date: Fri, 7 Apr 2023 17:22:09 +0900 Subject: [PATCH] Fix removing my reaction flag on status updated --- .../mastodon/actions/importer/normalizer.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index 6767b5a830..6065ed8ac2 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -1,7 +1,7 @@ import escapeTextContentForBrowser from 'escape-html'; import emojify from '../../features/emoji/emoji'; import { unescapeHTML } from '../../utils/html'; -import { expandSpoilers } from '../../initial_state'; +import { expandSpoilers, me } from '../../initial_state'; const domParser = new DOMParser(); @@ -66,8 +66,8 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.filtered = status.filtered.map(normalizeFilterResult); } - if (status.emoji_reactions) { - normalStatus.emojiReactions = status.emoji_reactions; + if (status.emoji_reactions && normalOldStatus) { + normalStatus.emoji_reactions = normalizeEmojiReactions(normalOldStatus.get('emoji_reactions').toArray()); } // Only calculate these values when status first encountered and @@ -100,6 +100,17 @@ export function normalizeStatus(status, normalOldStatus) { return normalStatus; } +export function normalizeEmojiReactions(emoji_reactions) { + const myAccountId = me; + let converted = []; + for (let emoji_reaction of emoji_reactions) { + let obj = emoji_reaction.toObject(); + obj.me = obj.account_ids.toArray().some((id) => id === myAccountId); + converted.push(obj); + } + return converted; +} + export function normalizePoll(poll) { const normalPoll = { ...poll }; const emojiMap = makeEmojiMap(normalPoll);