Commit Graph

47 Commits

Author SHA1 Message Date
Timo
5284479ece Knocking support (#2281)
* Add joining with knock room creation flow.

Also add `WaitForInviteView` after knocking.
And appropriate error views when knock failed or gets rejected.

Signed-off-by: Timo K <toger5@hotmail.de>

* Refactor encryption information.

We had lots of enums and booleans to describe the encryption situation.
Now we only use the `EncryptionSystem` "enum" which contains the
additional information like sharedKey. (and we don't use the isRoomE2EE
function that is somewhat confusing since it checks `return widget ===
null && !room.getCanonicalAlias();` which is only indirectly related to
e2ee)

Signed-off-by: Timo K <toger5@hotmail.de>

* Update recent list.

- Don't use deprecated `groupCallEventHander` anymore (it used the old
  `m.call` state event.)
- make the recent list reactive (getting removed from a call removes the
  item from the list)
- support having rooms without shared secret but actual matrix
  encryption in the recent list
- change the share link creation button so that we create a link with
  pwd for sharedKey rooms and with `perParticipantE2EE=true` for matrix
  encrypted rooms.

Signed-off-by: Timo K <toger5@hotmail.de>

* fix types

Signed-off-by: Timo K <toger5@hotmail.de>

* patch js-sdk for linter

Signed-off-by: Timo K <toger5@hotmail.de>

* ignore ts expect error

Signed-off-by: Timo K <toger5@hotmail.de>

* Fix error in widget mode.

We cannot call client.getRoomSummary in widget mode. The code path needs
to throw before reaching this call. (In general we should never call
getRoomSummary if getRoom returns a room)

Signed-off-by: Timo K <toger5@hotmail.de>

* tempDemo

Signed-off-by: Timo K <toger5@hotmail.de>

* remove wait for invite view

Signed-off-by: Timo K <toger5@hotmail.de>

* yarn i18n

Signed-off-by: Timo K <toger5@hotmail.de>

* reset back mute participant count

* add logic to show error view when getting removed

* include reason whenever someone gets removed from a call.

* fix activeRoom not beeing early enough

* fix lints

* add comment about encryption situation

Signed-off-by: Timo K <toger5@hotmail.de>

* Fix lockfile

* Use (unmerged!) RoomSummary type from the js-sdk

Temporarily change the js-sdk dependency to the PR branch that provides
that type

* review

Signed-off-by: Timo K <toger5@hotmail.de>

* review (remove participant count unknown)

Signed-off-by: Timo K <toger5@hotmail.de>

* remove error for unencrypted calls (allow intentional unencrypted calls)

Signed-off-by: Timo K <toger5@hotmail.de>

* update js-sdk

Signed-off-by: Timo K <toger5@hotmail.de>

---------

Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
2024-04-23 22:15:13 +09:00
Robin
5502f588eb Fix errors 2024-02-09 11:22:36 -05:00
Murat Ersin
f25f5776a0 The resolved bug comment for Livekit has been deleted. (#2015)
This comment has been deleted to avoid confusion because the mentioned issue has been resolved with livekit-client version 1.15.5.
2024-01-02 14:53:53 +01:00
David Baker
861d8ec016 Fix joining calls with no media permission
You can still try to unmute your media in the preview screen and
the button will show unmuted, but then mute again once you actually
join, so not 100% perfect but better.

Fixes https://github.com/vector-im/element-call/issues/1907
Fixes https://github.com/vector-im/element-call/issues/1661
2023-11-20 18:49:08 +00:00
David Baker
c146e83c15 Keep screenshares when switching focus
This also removes the use of the useLivekitRoom hook: we had reached
the point where the only thing it was actually doing was disconnecting,
so we now do that in the onClick handler for the leave button (I don't
think we need to disconnect on unmount?). It was otherwise just getting in
the way and causing tracks to be enabled/disabled when we didn't want them
to be. This also removes the need for the blockAudio code.

Fixes https://github.com/vector-im/element-call/issues/1413
2023-11-10 15:24:43 +00:00
David Baker
5ab6d18712 Make E2EEConfig required
Previously it could be either undefined or type None which meant the
same thing: no need to have both, just make it required.

This also means we can move the line to set e2ee enabled into a more
sensible place rather than in the ActiveCall de-nulling wrapper.
2023-11-10 11:54:59 +00:00
David Baker
49c90a4612 Amalgamate E2EEMode & E2eeType 2023-10-30 17:06:59 +00:00
David Baker
2d5b4dbc57 Merge remote-tracking branch 'origin/livekit' into dbkr/ppe2ee 2023-10-26 10:29:12 +01:00
Timo
8356b722a6 Add limit condition to sync loop and add more logging what is actually going on. (#1775)
---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-10-25 13:44:33 +02:00
David Baker
15d3e7574d Re-apply Simon's emebdded e2ee work on latest livekit branch
Replaces https://github.com/vector-im/element-call/pull/1350
2023-10-16 17:45:06 +01:00
David Baker
2faf9527a0 Fix using a non-default audio device
We were passing the output option when we wanted the input, so the
mic track pre-creation would just always use the system default.
2023-10-13 13:34:25 +01:00
Timo
5262af7000 Fix sync loop by adding a 20ms break for the next mute sync (#1742)
* fix sync loop by adding a 20ms break for the next mute sync

---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-10-12 10:51:37 +02:00
Robin
614bc82402 Format code 2023-10-11 10:42:04 -04:00
Robin
cc6f1f8631 Merge branch 'livekit' into eslint-upgrade 2023-10-11 10:30:57 -04:00
Timo
d5edcce470 Fix mute button not being in sync with actual video/audio feed. (#1721)
* Fix mute button not being in sync with actual video/audio feed.
This happens if we toggle the button while waiting for updating the stream.
It is prohibited by checking if the stream state is in sync after the update
is done.
Signed-off-by: Timo K <toger5@hotmail.de>


---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-10-10 14:14:39 +02:00
David Baker
c37b2924af Comment 2023-10-03 18:27:10 +01:00
David Baker
e0cabbc514 Switch capture devices if the default device changes
This is a bit of a hack, but is the only way I can see that we can
update to using the new default device when the OS-level default
changes. Hopefully the comments explain everything.
2023-10-03 18:22:56 +01:00
David Baker
4613d43c3c Re-enable livekit rageshake logging & with depth limit
Puts livekit logs back in the rageshake logs and adds a recursion
limit to the object serialiser in rageshake.
2023-09-26 12:08:08 +01:00
David Baker
b0f63eb2ff Revert "Capture livekit's logs in rageshakes" 2023-09-25 09:32:32 +01:00
Robin
a7624806b2 Upgrade eslint-plugin-matrix-org to 1.2.1
This upgrade came with a number of new lints that needed to be fixed across the code base. Primarily: explicit return types on functions, and explicit visibility modifiers on class members.
2023-09-22 18:07:06 -04:00
David Baker
9bf0dc7dee Unused import 2023-09-21 16:58:02 +01:00
David Baker
9c878eab80 Capture livekit's logs in rageshakes 2023-09-21 16:50:31 +01:00
Robin
69bf3bd9a1 Fix double audio tracks
See comments. I'm not very happy with how this code bounces state in and out of different hooks and useEffect blocks, but as a quick fix this should work.
2023-09-20 13:26:34 -04:00
David Baker
2c1692bd4f Always publish microphone track when joining 2023-09-08 17:22:02 +01:00
David Baker
4cd274b91e Manually disconnect & reconnect the livekit call if our focus changes
Without breaking the 'disconnected' screen
2023-08-29 12:45:34 +01:00
Robin Townsend
e04d3f7c8d Fix camera light regression
By avoiding a method call that was accidentally causing LiveKit to try to publish tracks before the SFU connection was established, resulting in an unclosed stream.
2023-08-04 13:15:24 -04:00
Robin Townsend
99ce5064f5 Fix multiple issues with device settings
To track media devices, we were previously relying on a combination of LiveKit's useMediaDeviceSelect hook, and an object called UserChoices. Device settings should be accessible from outside a call, but the latter hook should only be used with a room or set of preview tracks, so it couldn't be raised to the app's top level. I also felt that the UserChoices code was hard to follow due to lack of clear ownership of the object.

To bring clarity to media device handling and allow device settings to be shown outside a call, I refactored these things into a single MediaDevicesContext which is instantiated at the top level of the app. Then, I had to manually sync LiveKit's device state with whatever is present in the context. This refactoring ended up fixing a couple other bugs with device handling along the way.
2023-08-03 10:17:00 -04:00
Šimon Brandner
f7645ab432 Merge remote-tracking branch 'upstream/livekit' into SimonBrandner/feat/e2ee
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-25 16:00:12 +02:00
Šimon Brandner
7c5f07b498 Add a comment
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-25 15:49:59 +02:00
Šimon Brandner
8ee0e207bd Automatically mute the user, if there already are more than 8 participants
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-24 12:06:51 +02:00
David Baker
4eb9326bd2 Enable debug logging
Fixes https://github.com/vector-im/element-call/issues/1267
2023-07-17 19:33:29 +01:00
Šimon Brandner
4193629c2c Add E2EE password prompt
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-17 16:53:58 +02:00
Šimon Brandner
8946af8f4e Hack e2ee in
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-12 17:52:14 +02:00
Daniel Abramov
0105162ffa Enable strict lints
An attempt to fix https://github.com/vector-im/element-call/issues/1132
2023-07-11 16:02:58 +01:00
David Baker
130b70756a Revert "Revert "Support for getting SFU config using OIDC"" 2023-07-05 13:12:37 +01:00
David Baker
29553c1151 Revert "Support for getting SFU config using OIDC" 2023-07-04 19:21:35 +01:00
David Baker
f64bd0ab25 Unused import 2023-07-03 17:06:22 +01:00
David Baker
4524b418ff Merge remote-tracking branch 'origin/livekit' into dbkr/openid 2023-07-03 17:03:58 +01:00
Robin Townsend
17450b4531 Fix big grid crashing due to missing React import
by fixing the cause rather than the symptom: this upgrades the code to use the new, recommended JSX transform mode of React 17+, which no longer requires you to import React manually just to write JSX.
2023-06-30 18:21:18 -04:00
David Baker
8996aa772c Initial support for getting SFO config using OIDC
* Change `jwt_service_url` to `livekit_service_url`
 * Make it a POST so we can send the openID token sensibly
 * Get an OIDC token & pass it with the request
 * Read the SFU URL from there too

and convert the auth server accordingly, althugh with no actual OIDC
support yet, it just issues tokens blindly just as before and ignores
the openid token completely.

We'll need to update configs & the JWT service before merging this.
2023-06-28 16:35:56 +01:00
David Baker
2caaa15520 Fix username / displayname naming confusion 2023-06-27 12:23:19 +01:00
Daniel Abramov
5b4787cef6 LiveKit Device Usage Refactoring (#1120)
Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Timo K <toger5@hotmail.de>
2023-06-16 18:07:13 +02:00
Timo K
86ab2b4287 tinyFixes
Signed-off-by: Timo K <toger5@hotmail.de>
2023-06-15 11:40:16 +02:00
Timo K
a01e62d9ed revert of combined video+audio permission request
Signed-off-by: Timo K <toger5@hotmail.de>
2023-06-15 11:36:39 +02:00
Timo
41f2728724 Device from lobby to call (#1110)
* respect mute state set in lobby for call

Signed-off-by: Timo K <toger5@hotmail.de>

* move device from lobby to call

Signed-off-by: Timo K <toger5@hotmail.de>

* save device in local storage

Signed-off-by: Timo K <toger5@hotmail.de>

* local storage + fixes

Signed-off-by: Timo K <toger5@hotmail.de>

* device permissions

Signed-off-by: Timo K <toger5@hotmail.de>

---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-06-14 19:20:53 +02:00
Daniel Abramov
048dce05c3 Explicitly configure options for the LiveKit room 2023-06-09 19:04:46 +02:00
Daniel Abramov
28fe813b76 Move LiveKit module into its own directory 2023-06-09 18:31:29 +02:00