Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit d341c56

Browse files
authored
Fix issues around up arrow event edit shortcut (#9645)
1 parent 09282d9 commit d341c56

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/components/structures/RoomView.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import { logger } from "matrix-js-sdk/src/logger";
2525
import { EventTimeline } from 'matrix-js-sdk/src/models/event-timeline';
2626
import { EventType } from 'matrix-js-sdk/src/@types/event';
2727
import { RoomState, RoomStateEvent } from 'matrix-js-sdk/src/models/room-state';
28-
import { EventTimelineSet } from "matrix-js-sdk/src/models/event-timeline-set";
2928
import { CallState, MatrixCall } from "matrix-js-sdk/src/webrtc/call";
3029
import { throttle } from "lodash";
3130
import { MatrixError } from 'matrix-js-sdk/src/http-api';
@@ -1211,10 +1210,14 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
12111210
});
12121211
};
12131212

1214-
private onRoomTimelineReset = (room: Room, timelineSet: EventTimelineSet) => {
1215-
if (!room || room.roomId !== this.state.room?.roomId) return;
1216-
logger.log(`Live timeline of ${room.roomId} was reset`);
1217-
this.setState({ liveTimeline: timelineSet.getLiveTimeline() });
1213+
private onRoomTimelineReset = (room?: Room): void => {
1214+
if (room &&
1215+
room.roomId === this.state.room?.roomId &&
1216+
room.getLiveTimeline() !== this.state.liveTimeline
1217+
) {
1218+
logger.log(`Live timeline of ${room.roomId} was reset`);
1219+
this.setState({ liveTimeline: room.getLiveTimeline() });
1220+
}
12181221
};
12191222

12201223
private getRoomTombstone(room = this.state.room) {

src/utils/EventUtils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ export function findEditableEvent({
110110
events: MatrixEvent[];
111111
isForward: boolean;
112112
fromEventId?: string;
113-
}): MatrixEvent {
113+
}): MatrixEvent | undefined {
114+
if (!events.length) return;
114115
const maxIdx = events.length - 1;
115116
const inc = isForward ? 1 : -1;
116117
const beginIdx = isForward ? 0 : maxIdx;

test/utils/EventUtils-test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import {
3434
canEditContent,
3535
canEditOwnEvent,
3636
fetchInitialEvent,
37+
findEditableEvent,
3738
isContentActionable,
3839
isLocationEvent,
3940
isVoiceMessage,
@@ -430,4 +431,13 @@ describe('EventUtils', () => {
430431
expect(room.getThread(THREAD_ROOT)).toBeInstanceOf(Thread);
431432
});
432433
});
434+
435+
describe("findEditableEvent", () => {
436+
it("should not explode when given empty events array", () => {
437+
expect(findEditableEvent({
438+
events: [],
439+
isForward: true,
440+
})).toBeUndefined();
441+
});
442+
});
433443
});

0 commit comments

Comments
 (0)