From a960f3e473f96f14716d18b93acc4d29c4746774 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 6 Sep 2024 15:42:50 +0200 Subject: [PATCH] [Perf] Message: Use deep equal check after requesting views updates --- src/global/actions/api/messages.ts | 2 +- src/global/reducers/messages.ts | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/global/actions/api/messages.ts b/src/global/actions/api/messages.ts index 813423728..71d2f804f 100644 --- a/src/global/actions/api/messages.ts +++ b/src/global/actions/api/messages.ts @@ -2077,7 +2077,7 @@ addActionHandler('loadMessageViews', async (global, actions, payload): Promise( } export function updateChatMessage( - global: T, chatId: string, messageId: number, messageUpdate: Partial, + global: T, chatId: string, messageId: number, messageUpdate: Partial, withDeepCheck = false, ): T { const byId = selectChatMessages(global, chatId) || {}; const message = byId[messageId]; + + if (withDeepCheck && message) { + const updateKeys = Object.keys(messageUpdate) as (keyof ApiMessage)[]; + if (areDeepEqual(pick(message, updateKeys), messageUpdate)) { + return global; + } + } + if (message && messageUpdate.isMediaUnread === false && hasMessageTtl(message)) { if (message.content.voice) { messageUpdate.content = {