13 lines
900 B
Diff
13 lines
900 B
Diff
# 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));
|