From a2a4f99fce7c74bf3c9293e09c7744685db4bae5 Mon Sep 17 00:00:00 2001 From: 777genius Date: Sun, 31 May 2026 04:00:34 +0300 Subject: [PATCH] perf(renderer): avoid sorting stable team mention metadata --- .../team/messages/MessagesPanel.tsx | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/team/messages/MessagesPanel.tsx b/src/renderer/components/team/messages/MessagesPanel.tsx index 9e5c5a7d..d447be66 100644 --- a/src/renderer/components/team/messages/MessagesPanel.tsx +++ b/src/renderer/components/team/messages/MessagesPanel.tsx @@ -130,7 +130,23 @@ function compareTeamMentionEntries(a: TeamMentionEntry, b: TeamMentionEntry): nu ); } +function getTeamMentionSignature(teams: readonly TeamSummary[]): string { + return encodeTeamMentionParts( + teams.flatMap((team) => [ + team.teamName ?? '', + team.displayName ?? '', + team.color ?? '', + team.deletedAt ?? '', + ]) + ); +} + function selectMessagesPanelTeamMentionMeta(teams: readonly TeamSummary[]): TeamMentionMeta { + const signature = getTeamMentionSignature(teams); + if (signature === cachedTeamMentionSignature) { + return cachedTeamMentionMeta; + } + const entries = teams .map((team) => ({ teamName: team.teamName ?? '', @@ -139,13 +155,6 @@ function selectMessagesPanelTeamMentionMeta(teams: readonly TeamSummary[]): Team deletedAt: team.deletedAt ?? '', })) .sort(compareTeamMentionEntries); - const signature = encodeTeamMentionParts( - entries.flatMap((entry) => [entry.teamName, entry.displayName, entry.color, entry.deletedAt]) - ); - - if (signature === cachedTeamMentionSignature) { - return cachedTeamMentionMeta; - } if (entries.length === 0) { cachedTeamMentionSignature = signature;