We weren't waiting for rooms to arrive down the sync stream after
joining them but before trying to use them.
More regression details in linked issue.
Fixes https://github.com/vector-im/element-call/issues/477
Add a check to ensure that we find crypto data in the crypto store
when we're restoring a session and otherwise abort the session restore.
This will prevent us from restoring a session and generating new keys
when there was a previous session with different keys.
***This will force a logout for all users***
See the linked issue (and the comment in code) for more detail.
Fixes https://github.com/vector-im/element-call/issues/464
If you spoke for the maximum amount of time and got cut off, the
next time you tried to speak you'd just get the 'waiting for network'
state. Key repeats would cause more delayed state timeouts to queue
up.
The code was only entering the blocked state if the user was speaking,
which often won't be the case when another person starts speaking because
we'll have pressed the button but not got the ack back from the server
yet. Add the transmitblocked flag instead so we don't enter that state
again if we've already decided we've been blocked.
We were also starting with blocked = false and so resetting it when it
shouldn't have been reset.
Also requires https://github.com/matrix-org/matrix-js-sdk/pull/2502
Fixes https://github.com/vector-im/element-call/issues/434 and a
separate bug where the facepile would just disappear off to the left
(because we kept increasing the size even though we capped the number
of circles at 8 plus the overflow one).
We were using createRef() instead of useRef() in the hook, which
meant we were always creating a new ref object and never actually
getting the ref. This must have been working before the useEventTarget
stuff due to some quirk of React / hooks...