BaseAvatar can be passed an onClick which is called when it's, er,
clicked, except when it was the default avatar in which case it
merrily ignored it. Make it not ignore it.
The correct 1-1 avatar is used with rooms in which there are only two users with either "join" or "invite" as their membership (importantly, not "leave" or otherwise).
(This is important when a user moves accounts and re-joins previously left 1-1 chats)
* Fix join/part collapsing regressions
* Simplify loop
* Explain e,e
* Explain return null in _renderSummary
* Kill it properly
* Move . to _renderSummary
* Only use the first and last events to decide whether a net change has occured
* Do not sort events by TS before summarising
* fix loop and comment
* remove data-number-events
* Better explanation comment in _renderSummary
* Less tortuous comment
React apparently now checks the properties which are set on DOM elements, and
grumbles noisily about unexpected ones. Update BaseAvatar and RoomAvatar so
that they don't set unrelated properties on the DOM elements.
I've been trying to get some tests working under PhantomJS, which appears not
to support String.codePointAt (which is, to be fair, an ES6 addition). For our
limited usecase, it's easier to implement the functionality from first
principles than to try to polyfill support.
Object.keys() is O(n) and is wasted because we only care if the keys are 1 or 2.
Use `for .. in` instead and return early if there are >2 keys.
Profiling indicates this cuts wasted time from ~74ms to ~32ms for me (who has
a large number of rooms with large numbers of people in them).