commit
						392cde719c
					
				|  | @ -544,11 +544,13 @@ export default class MessagePanel extends React.Component { | |||
|             } | ||||
|             if (!grouper) { | ||||
|                 const wantTile = this._shouldShowEvent(mxEv); | ||||
|                 const isGrouped = false; | ||||
|                 if (wantTile) { | ||||
|                     // make sure we unpack the array returned by _getTilesForEvent,
 | ||||
|                     // otherwise react will auto-generate keys and we will end up
 | ||||
|                     // replacing all of the DOM elements every time we paginate.
 | ||||
|                     ret.push(...this._getTilesForEvent(prevEvent, mxEv, last, nextEvent, nextTile)); | ||||
|                     ret.push(...this._getTilesForEvent(prevEvent, mxEv, last, isGrouped, | ||||
|                         nextEvent, nextTile)); | ||||
|                     prevEvent = mxEv; | ||||
|                 } | ||||
| 
 | ||||
|  | @ -564,7 +566,7 @@ export default class MessagePanel extends React.Component { | |||
|         return ret; | ||||
|     } | ||||
| 
 | ||||
|     _getTilesForEvent(prevEvent, mxEv, last, nextEvent, nextEventWithTile) { | ||||
|     _getTilesForEvent(prevEvent, mxEv, last, isGrouped=false, nextEvent, nextEventWithTile) { | ||||
|         const TileErrorBoundary = sdk.getComponent('messages.TileErrorBoundary'); | ||||
|         const EventTile = sdk.getComponent('rooms.EventTile'); | ||||
|         const DateSeparator = sdk.getComponent('messages.DateSeparator'); | ||||
|  | @ -584,7 +586,7 @@ export default class MessagePanel extends React.Component { | |||
| 
 | ||||
|         // do we need a date separator since the last event?
 | ||||
|         const wantsDateSeparator = this._wantsDateSeparator(prevEvent, eventDate); | ||||
|         if (wantsDateSeparator) { | ||||
|         if (wantsDateSeparator && !isGrouped) { | ||||
|             const dateSeparator = <li key={ts1}><DateSeparator key={ts1} ts={ts1} /></li>; | ||||
|             ret.push(dateSeparator); | ||||
|         } | ||||
|  | @ -968,9 +970,9 @@ class CreationGrouper { | |||
| 
 | ||||
|         const DateSeparator = sdk.getComponent('messages.DateSeparator'); | ||||
|         const EventListSummary = sdk.getComponent('views.elements.EventListSummary'); | ||||
| 
 | ||||
|         const panel = this.panel; | ||||
|         const ret = []; | ||||
|         const isGrouped = true; | ||||
|         const createEvent = this.createEvent; | ||||
|         const lastShownEvent = this.lastShownEvent; | ||||
| 
 | ||||
|  | @ -984,12 +986,12 @@ class CreationGrouper { | |||
|         // If this m.room.create event should be shown (room upgrade) then show it before the summary
 | ||||
|         if (panel._shouldShowEvent(createEvent)) { | ||||
|             // pass in the createEvent as prevEvent as well so no extra DateSeparator is rendered
 | ||||
|             ret.push(...panel._getTilesForEvent(createEvent, createEvent, false)); | ||||
|             ret.push(...panel._getTilesForEvent(createEvent, createEvent)); | ||||
|         } | ||||
| 
 | ||||
|         for (const ejected of this.ejectedEvents) { | ||||
|             ret.push(...panel._getTilesForEvent( | ||||
|                 createEvent, ejected, createEvent === lastShownEvent, | ||||
|                 createEvent, ejected, createEvent === lastShownEvent, isGrouped, | ||||
|             )); | ||||
|         } | ||||
| 
 | ||||
|  | @ -998,7 +1000,7 @@ class CreationGrouper { | |||
|             // of EventListSummary, render each member event as if the previous
 | ||||
|             // one was itself. This way, the timestamp of the previous event === the
 | ||||
|             // timestamp of the current event, and no DateSeparator is inserted.
 | ||||
|             return panel._getTilesForEvent(e, e, e === lastShownEvent); | ||||
|             return panel._getTilesForEvent(e, e, e === lastShownEvent, isGrouped); | ||||
|         }).reduce((a, b) => a.concat(b), []); | ||||
|         // Get sender profile from the latest event in the summary as the m.room.create doesn't contain one
 | ||||
|         const ev = this.events[this.events.length - 1]; | ||||
|  | @ -1083,7 +1085,7 @@ class RedactionGrouper { | |||
| 
 | ||||
|         const DateSeparator = sdk.getComponent('messages.DateSeparator'); | ||||
|         const EventListSummary = sdk.getComponent('views.elements.EventListSummary'); | ||||
| 
 | ||||
|         const isGrouped = true; | ||||
|         const panel = this.panel; | ||||
|         const ret = []; | ||||
|         const lastShownEvent = this.lastShownEvent; | ||||
|  | @ -1103,7 +1105,8 @@ class RedactionGrouper { | |||
|         let eventTiles = this.events.map((e, i) => { | ||||
|             senders.add(e.sender); | ||||
|             const prevEvent = i === 0 ? this.prevEvent : this.events[i - 1]; | ||||
|             return panel._getTilesForEvent(prevEvent, e, e === lastShownEvent, this.nextEvent, this.nextEventTile); | ||||
|             return panel._getTilesForEvent( | ||||
|                 prevEvent, e, e === lastShownEvent, isGrouped, this.nextEvent, this.nextEventTile); | ||||
|         }).reduce((a, b) => a.concat(b), []); | ||||
| 
 | ||||
|         if (eventTiles.length === 0) { | ||||
|  | @ -1182,7 +1185,7 @@ class MemberGrouper { | |||
| 
 | ||||
|         const DateSeparator = sdk.getComponent('messages.DateSeparator'); | ||||
|         const MemberEventListSummary = sdk.getComponent('views.elements.MemberEventListSummary'); | ||||
| 
 | ||||
|         const isGrouped = true; | ||||
|         const panel = this.panel; | ||||
|         const lastShownEvent = this.lastShownEvent; | ||||
|         const ret = []; | ||||
|  | @ -1215,7 +1218,7 @@ class MemberGrouper { | |||
|             // of MemberEventListSummary, render each member event as if the previous
 | ||||
|             // one was itself. This way, the timestamp of the previous event === the
 | ||||
|             // timestamp of the current event, and no DateSeparator is inserted.
 | ||||
|             return panel._getTilesForEvent(e, e, e === lastShownEvent); | ||||
|             return panel._getTilesForEvent(e, e, e === lastShownEvent, isGrouped); | ||||
|         }).reduce((a, b) => a.concat(b), []); | ||||
| 
 | ||||
|         if (eventTiles.length === 0) { | ||||
|  |  | |||
|  | @ -77,7 +77,7 @@ describe('MessagePanel', function() { | |||
|         DMRoomMap.makeShared(); | ||||
|     }); | ||||
| 
 | ||||
|     afterEach(function() { | ||||
|     afterEach(function () { | ||||
|         clock.uninstall(); | ||||
|     }); | ||||
| 
 | ||||
|  | @ -88,7 +88,21 @@ describe('MessagePanel', function() { | |||
|             events.push(test_utils.mkMessage( | ||||
|                 { | ||||
|                     event: true, room: "!room:id", user: "@user:id", | ||||
|                     ts: ts0 + i*1000, | ||||
|                     ts: ts0 + i * 1000, | ||||
|                 })); | ||||
|         } | ||||
|         return events; | ||||
|     } | ||||
| 
 | ||||
|     // Just to avoid breaking Dateseparator tests that might run at 00hrs
 | ||||
|     function mkOneDayEvents() { | ||||
|         const events = []; | ||||
|         const ts0 = Date.parse('09 May 2004 00:12:00 GMT'); | ||||
|         for (let i = 0; i < 10; i++) { | ||||
|             events.push(test_utils.mkMessage( | ||||
|                 { | ||||
|                     event: true, room: "!room:id", user: "@user:id", | ||||
|                     ts: ts0 + i * 1000, | ||||
|                 })); | ||||
|         } | ||||
|         return events; | ||||
|  | @ -104,7 +118,7 @@ describe('MessagePanel', function() { | |||
|         let i = 0; | ||||
|         events.push(test_utils.mkMessage({ | ||||
|             event: true, room: "!room:id", user: "@user:id", | ||||
|             ts: ts0 + ++i*1000, | ||||
|             ts: ts0 + ++i * 1000, | ||||
|         })); | ||||
| 
 | ||||
|         for (i = 0; i < 10; i++) { | ||||
|  | @ -151,7 +165,7 @@ describe('MessagePanel', function() { | |||
|                     }, | ||||
|                     getMxcAvatarUrl: () => 'mxc://avatar.url/image.png', | ||||
|                 }, | ||||
|                 ts: ts0 + i*1000, | ||||
|                 ts: ts0 + i * 1000, | ||||
|                 mship: 'join', | ||||
|                 prevMship: 'join', | ||||
|                 name: 'A user', | ||||
|  | @ -250,7 +264,6 @@ describe('MessagePanel', function() { | |||
|             }), | ||||
|         ]; | ||||
|     } | ||||
| 
 | ||||
|     function isReadMarkerVisible(rmContainer) { | ||||
|         return rmContainer && rmContainer.children.length > 0; | ||||
|     } | ||||
|  | @ -437,4 +450,17 @@ describe('MessagePanel', function() { | |||
|         // read marker should be hidden given props and at the last event
 | ||||
|         expect(isReadMarkerVisible(rm)).toBeFalsy(); | ||||
|     }); | ||||
| 
 | ||||
|     it('should render Date separators for the events', function () { | ||||
|         const events = mkOneDayEvents(); | ||||
|         const res = mount( | ||||
|             <WrappedMessagePanel | ||||
|                 className="cls" | ||||
|                 events={events} | ||||
|             />, | ||||
|         ); | ||||
|         const Dates = res.find(sdk.getComponent('messages.DateSeparator')); | ||||
|         | ||||
|         expect(Dates.length).toEqual(1); | ||||
|     }); | ||||
| }); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Travis Ralston
						Travis Ralston