java-topology/defects/element-web/patch/element-web-0002-textforevent-pinned-set.patch

13 lines
900 B
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# UNDF: UNDF-2026-000000729
--- a/apps/web/src/TextForEvent.tsx
+++ b/apps/web/src/TextForEvent.tsx
@@ -565,8 +565,10 @@ function textForPinnedEvent(event: MatrixEvent, client: MatrixClient, isTwelveHo
const pinned = Array.isArray(content.pinned) ? content.pinned : [];
const previouslyPinned: string[] = Array.isArray(prevContent.pinned) ? prevContent.pinned : [];
- const newlyPinned = pinned.filter((item) => previouslyPinned.indexOf(item) < 0);
- const newlyUnpinned = previouslyPinned.filter((item) => pinned.indexOf(item) < 0);
+ // Use Set for O(1) membership test; avoids O(P×Q) from indexOf inside filter
+ const pinnedSet = new Set(pinned);
+ const previouslyPinnedSet = new Set(previouslyPinned);
+ const newlyPinned = pinned.filter((item) => !previouslyPinnedSet.has(item));
+ const newlyUnpinned = previouslyPinned.filter((item) => !pinnedSet.has(item));