@@ -45,7 +45,7 @@ const newReceipt = (eventId: string, userId: string, readTs: number, fullyReadTs
4545 return new MatrixEvent ( { content : receiptContent , type : EventType . Receipt } ) ;
4646} ;
4747
48- const renderPanel = ( room : Room , events : MatrixEvent [ ] ) : RenderResult => {
48+ const getProps = ( room : Room , events : MatrixEvent [ ] ) : TimelinePanel [ "props" ] => {
4949 const timelineSet = { room : room as Room } as EventTimelineSet ;
5050 const timeline = new EventTimeline ( timelineSet ) ;
5151 events . forEach ( ( event ) => timeline . addEvent ( event , true ) ) ;
@@ -54,13 +54,16 @@ const renderPanel = (room: Room, events: MatrixEvent[]): RenderResult => {
5454 timelineSet . getPendingEvents = ( ) => events ;
5555 timelineSet . room . getEventReadUpTo = ( ) => events [ 1 ] . getId ( ) ;
5656
57- return render (
58- < TimelinePanel
59- timelineSet = { timelineSet }
60- manageReadReceipts
61- sendReadReceiptOnLoad
62- /> ,
63- ) ;
57+ return {
58+ timelineSet,
59+ manageReadReceipts : true ,
60+ sendReadReceiptOnLoad : true ,
61+ } ;
62+ } ;
63+
64+ const renderPanel = ( room : Room , events : MatrixEvent [ ] ) : RenderResult => {
65+ const props = getProps ( room , events ) ;
66+ return render ( < TimelinePanel { ...props } /> ) ;
6467} ;
6568
6669const mockEvents = ( room : Room , count = 2 ) : MatrixEvent [ ] => {
@@ -172,4 +175,21 @@ describe('TimelinePanel', () => {
172175 expect ( client . setRoomReadMarkers ) . toHaveBeenCalledWith ( room . roomId , "" , undefined , events [ 0 ] ) ;
173176 } ) ;
174177 } ) ;
178+
179+ it ( "should scroll event into view when props.eventId changes" , ( ) => {
180+ const client = MatrixClientPeg . get ( ) ;
181+ const room = mkRoom ( client , "roomId" ) ;
182+ const events = mockEvents ( room ) ;
183+
184+ const props = {
185+ ...getProps ( room , events ) ,
186+ onEventScrolledIntoView : jest . fn ( ) ,
187+ } ;
188+
189+ const { rerender } = render ( < TimelinePanel { ...props } /> ) ;
190+ expect ( props . onEventScrolledIntoView ) . toHaveBeenCalledWith ( undefined ) ;
191+ props . eventId = events [ 1 ] . getId ( ) ;
192+ rerender ( < TimelinePanel { ...props } /> ) ;
193+ expect ( props . onEventScrolledIntoView ) . toHaveBeenCalledWith ( events [ 1 ] . getId ( ) ) ;
194+ } ) ;
175195} ) ;
0 commit comments