From d679e68501aef1d731555311091a515ff5b8362d Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Mon, 9 Mar 2026 17:34:44 +1100 Subject: [PATCH] Fix recent emoji does not persist (#2722) Fix recent emoji are not getting saved Refactor recent emoji retrieval to ensure structured cloning and proper type checking. The sdk was not updating account data because we are mutating the original and it compare and early return if found same. --- src/app/plugins/recent-emoji.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/plugins/recent-emoji.ts b/src/app/plugins/recent-emoji.ts index 3634538f..811ed9d5 100644 --- a/src/app/plugins/recent-emoji.ts +++ b/src/app/plugins/recent-emoji.ts @@ -27,7 +27,11 @@ export const getRecentEmojis = (mx: MatrixClient, limit?: number): IEmoji[] => { export function addRecentEmoji(mx: MatrixClient, unicode: string) { const recentEmojiEvent = getAccountData(mx, AccountDataEvent.ElementRecentEmoji); - const recentEmoji = recentEmojiEvent?.getContent().recent_emoji ?? []; + const recentEmojiContent = recentEmojiEvent?.getContent(); + const recentEmoji = + recentEmojiContent && Array.isArray(recentEmojiContent.recent_emoji) + ? structuredClone(recentEmojiContent.recent_emoji) + : []; const emojiIndex = recentEmoji.findIndex(([u]) => u === unicode); let entry: [EmojiUnicode, EmojiUsageCount];