MSC: https://github.com/matrix-org/matrix-doc/pull/2918
Fixes https://github.com/vector-im/element-web/issues/18698
Fixes https://github.com/vector-im/element-web/issues/20648
**Requires https://github.com/matrix-org/matrix-js-sdk/pull/2178**
**Note**: There's a lot of logging in this PR. That is intentional to ensure that if/when something goes wrong we can chase the exact code path. It does not log any tokens - just where the code is going. Overall, it should be fairly low volume spam (and can be relaxed at a later date).
----
This approach uses indexeddb (through a mutex library) to manage which tab actually triggers the refresh, preventing issues where multiple tabs try to update the token. If multiple tabs update the token then the server might consider the account hacked and hard logout all the tokens.
If for some reason the timer code gets it wrong, or the user has been offline for too long and the token can't be refreshed, they should be sent to a soft logout screen by the server. This will retain the user's encryption state - they simply need to reauthenticate to get an active access token again.
This additionally contains a change to fix soft logout not working, per the issue links above.
Of interest may be the IPC approach which was ultimately declined in favour of this change instead: https://github.com/matrix-org/matrix-react-sdk/pull/7803
* Add an end-to-end test for stickers
* More logs on login
* Wait for spinners to go away
* Factor out spinner waiting as it seems useful
* Move stickers to the end
* More waiting
* When all else fails... add sleeps
* Waiting for the server picker to appear seems to work..?
* Typos
Co-authored-by: J. Ryan Stinnett <jryans@gmail.com>
* remove commented code from registration usecase
Co-authored-by: J. Ryan Stinnett <jryans@gmail.com>
* Use the shared secret registration API directly
rather than invoking the synapse module to do it. It's probably
a bit simpler, if anything, and allows for synapse to be run in
a separate container (or rather, avoids the javascript having to have
a copy of synapse source & server config).
* Make registration secret required
Update commander (8 major versions!) to get requiredOption
* Wrong options object :/