From 3a480a9824ff34af3d954b5197458cbc68029c63 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Nov 2022 12:25:38 +0000 Subject: [PATCH 1/5] Fix findEditableEvent exploding when given empty events array --- src/utils/EventUtils.ts | 3 ++- test/utils/EventUtils-test.ts | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/utils/EventUtils.ts b/src/utils/EventUtils.ts index 69e322ac6dc..69c3351def0 100644 --- a/src/utils/EventUtils.ts +++ b/src/utils/EventUtils.ts @@ -110,7 +110,8 @@ export function findEditableEvent({ events: MatrixEvent[]; isForward: boolean; fromEventId?: string; -}): MatrixEvent { +}): MatrixEvent | undefined { + if (!events.length) return; const maxIdx = events.length - 1; const inc = isForward ? 1 : -1; const beginIdx = isForward ? 0 : maxIdx; diff --git a/test/utils/EventUtils-test.ts b/test/utils/EventUtils-test.ts index 644f274c19c..5600170e3fb 100644 --- a/test/utils/EventUtils-test.ts +++ b/test/utils/EventUtils-test.ts @@ -33,7 +33,7 @@ import { canCancel, canEditContent, canEditOwnEvent, - fetchInitialEvent, + fetchInitialEvent, findEditableEvent, isContentActionable, isLocationEvent, isVoiceMessage, @@ -430,4 +430,13 @@ describe('EventUtils', () => { expect(room.getThread(THREAD_ROOT)).toBeInstanceOf(Thread); }); }); + + describe("findEditableEvent", () => { + it("should not explode when given empty events array", () => { + expect(findEditableEvent({ + events: [], + isForward: true, + })).toBeUndefined(); + }); + }); }); From b8b97b23d48a1161a7887d94a1dc42d50a6240ab Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Nov 2022 12:34:34 +0000 Subject: [PATCH 2/5] Fix liveTimeline being reset wrong in RoomState --- src/components/structures/RoomView.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index b9150624fe3..c162a029eb6 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -1211,10 +1211,14 @@ export class RoomView extends React.Component { }); }; - private onRoomTimelineReset = (room: Room, timelineSet: EventTimelineSet) => { - if (!room || room.roomId !== this.state.room?.roomId) return; - logger.log(`Live timeline of ${room.roomId} was reset`); - this.setState({ liveTimeline: timelineSet.getLiveTimeline() }); + private onRoomTimelineReset = (room: Room): void => { + if (room && + room.roomId === this.state.room?.roomId && + room.getLiveTimeline() !== this.state.liveTimeline + ) { + logger.log(`Live timeline of ${room.roomId} was reset`); + this.setState({ liveTimeline: room.getLiveTimeline() }); + } }; private getRoomTombstone(room = this.state.room) { From 9ee2e0937e3ad5ad0ad4ccacfa496c5d0cc90292 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Nov 2022 12:36:33 +0000 Subject: [PATCH 3/5] delint --- test/utils/EventUtils-test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/utils/EventUtils-test.ts b/test/utils/EventUtils-test.ts index 5600170e3fb..bf72dcd9fa6 100644 --- a/test/utils/EventUtils-test.ts +++ b/test/utils/EventUtils-test.ts @@ -33,7 +33,8 @@ import { canCancel, canEditContent, canEditOwnEvent, - fetchInitialEvent, findEditableEvent, + fetchInitialEvent, + findEditableEvent, isContentActionable, isLocationEvent, isVoiceMessage, From 261005d875c9a44fe8b309bf7ec72bf98164f0fa Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Nov 2022 12:56:01 +0000 Subject: [PATCH 4/5] Delint --- src/components/structures/RoomView.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index c162a029eb6..4f53132db9c 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -25,7 +25,6 @@ import { logger } from "matrix-js-sdk/src/logger"; import { EventTimeline } from 'matrix-js-sdk/src/models/event-timeline'; import { EventType } from 'matrix-js-sdk/src/@types/event'; import { RoomState, RoomStateEvent } from 'matrix-js-sdk/src/models/room-state'; -import { EventTimelineSet } from "matrix-js-sdk/src/models/event-timeline-set"; import { CallState, MatrixCall } from "matrix-js-sdk/src/webrtc/call"; import { throttle } from "lodash"; import { MatrixError } from 'matrix-js-sdk/src/http-api'; From 8f745bd9718051e02b47d45cb4af96ac9bc25c22 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Nov 2022 13:33:59 +0000 Subject: [PATCH 5/5] TSC strict --- src/components/structures/RoomView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index 4f53132db9c..1346cb49b9d 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -1210,7 +1210,7 @@ export class RoomView extends React.Component { }); }; - private onRoomTimelineReset = (room: Room): void => { + private onRoomTimelineReset = (room?: Room): void => { if (room && room.roomId === this.state.room?.roomId && room.getLiveTimeline() !== this.state.liveTimeline