Catch error when encountering invalid m.room.pinned_events event (#30534)
This commit is contained in:
committed by
GitHub
parent
d2e4631a14
commit
4da27eb199
@@ -572,8 +572,11 @@ function textForPinnedEvent(event: MatrixEvent, client: MatrixClient, allowJSX:
|
|||||||
const senderName = getSenderName(event);
|
const senderName = getSenderName(event);
|
||||||
const roomId = event.getRoomId()!;
|
const roomId = event.getRoomId()!;
|
||||||
|
|
||||||
const pinned = event.getContent<{ pinned: string[] }>().pinned ?? [];
|
const content = event.getContent<{ pinned: string[] }>();
|
||||||
const previouslyPinned: string[] = event.getPrevContent().pinned ?? [];
|
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 newlyPinned = pinned.filter((item) => previouslyPinned.indexOf(item) < 0);
|
||||||
const newlyUnpinned = previouslyPinned.filter((item) => pinned.indexOf(item) < 0);
|
const newlyUnpinned = previouslyPinned.filter((item) => pinned.indexOf(item) < 0);
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,12 @@ export function eventTriggersUnreadCount(client: MatrixClient, ev: MatrixEvent):
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ev.isRedacted()) return false;
|
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 {
|
export function doesRoomHaveUnreadMessages(room: Room, includeThreads: boolean): boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user