We were waiting for the group call event handler to process the room,
but only if we couldn't get the room from the client - if getRoom returned
a room, we just wouldn't wait. This just uses promises rather than
an event to wait for the room to be ready.
Requires https://github.com/matrix-org/matrix-js-sdk/pull/2641
This (hopefully) fixes the remaining bug where extra group calls
could be created when entering a room.
We waited for the Room event to arrive, but didn't wait for the
group call event handler to actually process the event, so it would
have depended what order the event handlers were run in.
If this doesn't fix it, it at least adds logging so we'll have more
to go on next time.
Fixes https://github.com/vector-im/element-call/issues/563
We were putting the whole array from setState in, so the debug info
was wrapped in an array when it shouldn't be.
Also comment the groupCallInspector setState/context dance which I
now *finally* understand.
We had an error boundary at the top level of the app, but it didn't
work because it used ErrorPage which tried to use a bunch of things
like useLocation() and an error prop. Also it wasn't passed in correctly
anyway.
This wires it up correctly to a separate view with a button to send
debug logs, and also moves it down a few layers so it has access to
enough things to be able to send rageshakes.
Related: https://github.com/vector-im/element-call/issues/421
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...
This will probably be overly sensitive until we start timing out
member events (ie. https://github.com/matrix-org/matrix-js-sdk/pull/2446
lands) because lots of calls might have old member events from people
who've joined previously.
The recent typescripting appears to have caused the typescript
compiler to get confused about dependency references and start
refwrencing things like CRYPTO_ENABLED in the js-sdk before it's
defined them.
This avoids using things from the (javascript) browser-index import
and instead pulls everything in from the typescript files, then
fixes the resulting type failures, (in some cases with hacks).
The room alias is not part of the spec. Synapse returns it anyway,
but it's not part of the js-sdk types. We don't really need the
server to tell us what the alias is, so just generate it locally
instead.
To be consistent with normal view and avoid nested dialogs.
Also disable space for the PTT key when the feedback dialog is visible,
since otherwise you can't type a space. Involves some rearrangement of
modal state.
Remove accidentally comitted vite port config.
* Avoid also getting a 'mousedown' event by making the event listener
non-passive so the preventDefault() works
* Remember the touch that pressed the button so we only un-press
when that touch ends, otherwise the button gets released if the
user taps the screen anywhere else.
Play the 'blocked' sound effect whenever the user is till holding
the button but can't speak anymore, whether they've been cut off
by someone else or have reached their time limit.