updating the roomview is expensive, so we shouldn't do it every time we get a
typing notification (which may or may not correspond to a user in this
room). Push it down to RoomStatusBar, and use a state var to keep track of it.
Basically two changes here:
1. Factor out auxpanel from RoomView
2. Rather than setting maxHeight attributes by poking directly into the DOM,
pass them down as properties.
Switch to using a normal <a href="..."> link for search result
clickthrough. Apart from generally giving a better experience, this means that
it also works on html messages. The problem there was that we were attaching
onClick handlers to <span>s which we were then flattening into HTML with
ReactDOMServer (which meant the onClick handlers were never attached to React's
list of listeners).
To make this work without jumping through React hoops, the highlighter now
returns either a list of strings or a list of nodes, depending on whether we
are dealing with an HTML event or a text one. We therefore have a separate
HtmlHighlighter and TextHighlighter.
matrix-js-sdk now retains redacted events. Filter them out of the timeline.
Also put empty placeholders in the dom so that if we try to scroll to a
redacted event, we don't end up blowing up.
We want to keep things scrolling up after the read-up-to mark hits the middle
of the screen. Do this by giving the ScrollPanel a stickyBottom (provided we're
not in old history) instead of updating the scroll position when RRs arrive.
Also, when we switch back to a room, if there was no special scroll state, jump
to the end of the timeline instead of the RR mark.
* Only send read receipts when we are at the bottom of a room; this is a simple
and effective way of stopping the green bar of doom from jumping down the
room slightly behind the scroll.
* Jump to read-up-to mark when switching back to a room if we were following
the live timeline before.
- Don't manipulate settings in RoomView. Make it RoomSettings' job.
- Return Promise[] from AliasSettings.save() rather than an allSettled promise
so callers can have more granularity over what to do with it (.all vs .allSettled)
- General refactoring of RoomSettings. Most things are broken now and are not
submitted. Add util methods to grab values out of events.