diff --git a/src/components/emoji_reactions/emoji_reactions.js b/src/components/emoji_reactions/emoji_reactions.js index 6296e3c9a..f9cc2e2fd 100644 --- a/src/components/emoji_reactions/emoji_reactions.js +++ b/src/components/emoji_reactions/emoji_reactions.js @@ -37,9 +37,9 @@ const EmojiReactions = { }, accountsForEmoji() { return this.status.emoji_reactions.reduce((acc, reaction) => { - acc[reaction.name] = reaction.accounts || [] + acc.set(reaction.name, new Set(reaction.account_ids)) return acc - }, {}) + }, new Map()) }, loggedIn() { return !!useUsersStore().currentUser diff --git a/src/components/emoji_reactions/emoji_reactions.vue b/src/components/emoji_reactions/emoji_reactions.vue index a8100c0d4..8f830e8ae 100644 --- a/src/components/emoji_reactions/emoji_reactions.vue +++ b/src/components/emoji_reactions/emoji_reactions.vue @@ -52,7 +52,7 @@ { - data.forEach((reaction) => { + const reactions = data.map((reaction) => { const users = useUsersStore().addNewUsers({ timestamp, data: reaction.accounts, }) - reaction.accounts = users + + // Backend inconsistency - status data only has ids (account_ids) + // but reactions data has full info (accounts) + return { + ...reaction, + accounts: users, + account_ids: users.map(({ id }) => id), + } }) - this.addEmojiReactionsBy(id, data) + + this.addEmojiReactionsBy(id, reactions) }) }, fetchFavs(id) {