Catch error when encountering invalid m.room.pinned_events event (#30534)

This commit is contained in:
Michael Telatynski
2025-08-11 10:42:46 +01:00
committed by GitHub
parent d2e4631a14
commit 4da27eb199
2 changed files with 11 additions and 3 deletions

View File

@@ -572,8 +572,11 @@ function textForPinnedEvent(event: MatrixEvent, client: MatrixClient, allowJSX:
const senderName = getSenderName(event);
const roomId = event.getRoomId()!;
const pinned = event.getContent<{ pinned: string[] }>().pinned ?? [];
const previouslyPinned: string[] = event.getPrevContent().pinned ?? [];
const content = event.getContent<{ pinned: string[] }>();
const prevContent = event.getPrevContent();
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);

View File

@@ -39,7 +39,12 @@ export function eventTriggersUnreadCount(client: MatrixClient, ev: MatrixEvent):
}
if (ev.isRedacted()) return false;
return haveRendererForEvent(ev, client, false /* hidden messages should never trigger unread counts anyways */);
try {
return haveRendererForEvent(ev, client, false /* hidden messages should never trigger unread counts anyways */);
} catch (e) {
console.warn("Error determining if event should trigger unread count", e);
return false; // If we can't determine if the event should trigger an unread count, assume it does not.
}
}
export function doesRoomHaveUnreadMessages(room: Room, includeThreads: boolean): boolean {