Fix regression with TimelinePanel props updates not taking effect (#9608)
* Fix regression with TimelinePanel props updates not taking effect * Add test
This commit is contained in:
parent
a8e15ebe60
commit
8b8d24c24c
2 changed files with 36 additions and 16 deletions
|
@ -45,7 +45,7 @@ const newReceipt = (eventId: string, userId: string, readTs: number, fullyReadTs
|
|||
return new MatrixEvent({ content: receiptContent, type: EventType.Receipt });
|
||||
};
|
||||
|
||||
const renderPanel = (room: Room, events: MatrixEvent[]): RenderResult => {
|
||||
const getProps = (room: Room, events: MatrixEvent[]): TimelinePanel["props"] => {
|
||||
const timelineSet = { room: room as Room } as EventTimelineSet;
|
||||
const timeline = new EventTimeline(timelineSet);
|
||||
events.forEach((event) => timeline.addEvent(event, true));
|
||||
|
@ -54,13 +54,16 @@ const renderPanel = (room: Room, events: MatrixEvent[]): RenderResult => {
|
|||
timelineSet.getPendingEvents = () => events;
|
||||
timelineSet.room.getEventReadUpTo = () => events[1].getId();
|
||||
|
||||
return render(
|
||||
<TimelinePanel
|
||||
timelineSet={timelineSet}
|
||||
manageReadReceipts
|
||||
sendReadReceiptOnLoad
|
||||
/>,
|
||||
);
|
||||
return {
|
||||
timelineSet,
|
||||
manageReadReceipts: true,
|
||||
sendReadReceiptOnLoad: true,
|
||||
};
|
||||
};
|
||||
|
||||
const renderPanel = (room: Room, events: MatrixEvent[]): RenderResult => {
|
||||
const props = getProps(room, events);
|
||||
return render(<TimelinePanel {...props} />);
|
||||
};
|
||||
|
||||
const mockEvents = (room: Room, count = 2): MatrixEvent[] => {
|
||||
|
@ -172,4 +175,21 @@ describe('TimelinePanel', () => {
|
|||
expect(client.setRoomReadMarkers).toHaveBeenCalledWith(room.roomId, "", undefined, events[0]);
|
||||
});
|
||||
});
|
||||
|
||||
it("should scroll event into view when props.eventId changes", () => {
|
||||
const client = MatrixClientPeg.get();
|
||||
const room = mkRoom(client, "roomId");
|
||||
const events = mockEvents(room);
|
||||
|
||||
const props = {
|
||||
...getProps(room, events),
|
||||
onEventScrolledIntoView: jest.fn(),
|
||||
};
|
||||
|
||||
const { rerender } = render(<TimelinePanel {...props} />);
|
||||
expect(props.onEventScrolledIntoView).toHaveBeenCalledWith(undefined);
|
||||
props.eventId = events[1].getId();
|
||||
rerender(<TimelinePanel {...props} />);
|
||||
expect(props.onEventScrolledIntoView).toHaveBeenCalledWith(events[1].getId());
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue