We only ever used the static instance() method to get to the config
object, so just make a static instance that returns the ConfigOptions
directly, throwing an exception if it's not yet initialised. This way
the types can all be non-optional (plus it's shorter).
The other options are things people usually won't need or want to
set, so just keep it to the basics.
* Rename config sample to match element-web
* Update / simplify build instructions
* Rename nginx config file to differentiate it from EC config
* We don't need to check out the js-sdk separately anymore
* Remove the vite proxying: there's no need since Matrix HSes allow
cross origin requests. This will let us move the default homeserver
config to the config file (in a separate PR...)
* Remove the product name variable which just set it to the default anyway
Hopefully explained in comment: we have a heisenbug where we sometimes
lack audio from a certain participant, so this simplifies the audio
path by removing the workaround required to do AEC with spatial audio
on chrome.
See comment, although this is quite hack - I'm torn on whether this
is worth it for the bugfix. Upgrading react-aria doesn't fix it either
(and also breaks everything in React strict mode).
Fixes https://github.com/vector-im/element-call/issues/762
This build script might change more soon (we shouldn't really need
to checkout & link the js-sdk at all) but for now let's just switch
the branch now group-call is merged.
We didn't check whether we actually had a video device when seeing
if the current video devices was in the list of devices, so this
caused loops which confused Safari.
The 'connecting' tile change meant that we could have tiles right
at the start of the call where we wouldn't have before, and in fact
could have tiles for other users before we even had a tile for ourself.
This threw off the logic for ordering tiles which had a special case
for 1:1 calling which assumed that one of the tiles in a 1:1 call was
the local user. In this case, this assumption wasn't true at the very
start of the call, so the tile orders got assigned incorrectly and then
persisted for the rest of the call.
Fixes https://github.com/vector-im/element-call/issues/694
* Make the embedded mode screen sharing a request-each-way rather
than request-and-reply, since replies time out and so can't wait
for the user.
* Try normal screen sharing first, then fall back to using the widget
API if it fails (for lack of a good way of detecting when we
should be using the widget API).
Fixes https://github.com/vector-im/element-call/issues/649
This was a confusion between indicies of the tile and the tile position:
the spotlight tile is the 0th TilePosition, ie. the tile with order
0, not the tile with index 0.
Also comment one method to hopefully make this slightly easier to
understand.
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.