* Implement simple team-based registration
Config required goes in the `teams` top-level property in config.json. This consists of an array of team objects:
```json
{
"name": "University of Bath",
"emailSuffix": "bath.ac.uk"
}
```
These can be selected on registration and require a user to have a certain email address in order to register as part of a team. This is for vector-im/riot-web#2940. The next step would be sending users with emails matching the emailSuffix of a team to the correct welcome page as in vector-im/riot-web#2430.
* Render attachments inside iframes.
* Fix up the image and video views
* Fix m.audio
* Comments, and only use the cross domain renderer if the attachment is encrypted
* Fix whitespace
* Don't decrypt file attachments immediately
* Use https://usercontent.riot.im/v1.html by default
* typos
* Put the config in the React context.
Use it in MFileBody to configure the cross origin renderer URL.
* Call it appConfig in the context
* Return the promises so they don't get dropped
The idea here is to make a layer which sits around for as long as we have a
valid MatrixClient. Also it makes a plausible split for the render of
MatrixChat, even if they are much too tightly bound for now.
Don't use replaceState in MatrixClient: there's lots of stuff in
MatrixClient's state now (including the app version) so replacing
the entire state doesn't really make sense (and also blows away
all of the nice defaults we set in getInitialState). Instead,
setState of the things we actually care about wherever we used
replaceState.
Also add a couple of state variables to getInitialState that were
missing.
Fixes https://github.com/vector-im/vector-web/issues/2322
Get rid of MatrixClientPeg.replaceUsingUrls, and instead create local,
temporary MatrixClients for the unauthed steps; we therefore only use
MatrixClientPeg for logged-in clients.
move the logic for handling login tokens into Lifecycle.loadSession
This means it needs access to the (real) query parmeters, so it depends on
corresponding changes in vector-web.
Make sure that we use the homeserver from localstorage for guest regsistration,
in preference to the default.
Also rename the parameters for loadSession
Take some of the magic out of MatrixChat.componentDidMount() into a new
component.
Also delete the MatrixChat test. It wasn't really doing much, is broken by the
change, and I am replacing it with (better) app-level tests in the vector
project.
when login completes, we replace the whole state, which means we unset
collapse_lhs, which then leads to complaints from the RoomList.
I think the 'default view' for MatrixChat ought to be factored out to another
component, which could manage collapse_lhs properly; but for now, hack around
it.
Also try to refactor some of the login/logout code out of MatrixChat and into a separate Lifecycle.js. This still isn't great, but it at least gets some code out of MatrixClient.
Plus a number of other tidyups:
* Fix /join to dispatch a view_room for the room alias
with the additional auto_join parameter
* Make RoomView automatically join the room if the auto_join
parameter is true and the user isn't already in it
* Tidy up RoomView's peeking code, also fixing
https://github.com/vector-im/vector-web/issues/1220
in react-sdk (although it still requires a synapse change
to actually fix, but react-sdk does 'the right thing').
* Remove duplication of usage text from /join command
* Amalgamate MatrixChat::_viewRoom's many, many parameters
into an object and sort out case consistency a little.
Add a callback to RoomView that it can give the room ID to once it's resolved it, since this lookup is now the responsibility of the roomview and only the roomview. The view_room action now has either an alias or an ID, not both. Also fix RoomView to load the room properly and not try to peek when it shouldn't.
Sorts out more of the room joining mess. currentRoom which held the room ID is now more appropriately called currentRoomId. RoomView will now take a roomID or alias as before but will now look up the room ID as required if given the alias. Also, now look up the alias every time you click on it so it's never stale, rather than looking in your current rooms for a room that thinks it has that ID.