Commit Graph

65 Commits

Author SHA1 Message Date
Šimon Brandner
f3615b73fc /me is an idiot
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-25 15:18:45 +02:00
Šimon Brandner
a6f803a091 Don't change mute state while in the lobby
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-25 13:40:22 +02:00
David Baker
d66f045743 Merge remote-tracking branch 'origin/livekit' into dbkr/react_to_livekit_disconnect 2023-07-24 21:35:09 +01:00
Šimon Brandner
c2a3d60efd Mute in lobby
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-24 17:44:07 +02:00
David Baker
1675770196 Add disconnected screen for when livekit disconnects from the call
eg. when it gives up retrying to connect

Also refactors the rageshake button into a dedicated component that
we can just put wherever we want.

Fixes https://github.com/vector-im/element-call/issues/1268
2023-07-20 17:55:50 +01:00
David Baker
e264a71d1e Merge v0.4.2 hotfixes 2023-07-12 17:57:54 +01:00
Daniel Abramov
f3de341a4b Remove unnecessary usage of a roomIdOrAlias
In most cases the `roomId` was used despite the name of the variable.
2023-07-11 16:02:58 +01:00
Daniel Abramov
aaa9b7761c Use widget with ! instead of ?
It cannot be `null` in the mentioned contexts as discussed with Robin.
2023-07-11 16:02:58 +01: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
Šimon Brandner
3c560ed126 Merge pull request #1209 from vector-im/SimonBrandner/feat/lk-url-fallback 2023-07-07 18:18:58 +02:00
Šimon Brandner
124c6223e4 Fallback to config LiveKit URL if there is no URL coming from the js-sdk
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-07 16:08:30 +02:00
Daniel Abramov
008d22a2a0 Use unique and stable room names for LiveKit
Fixes #1165.
2023-07-07 12:36:53 +01:00
Šimon Brandner
3d57d63f7f Don't unnecessarily use useEffect
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-06 12:12:28 +02:00
Šimon Brandner
ce1671a117 Merge remote-tracking branch 'upstream/dbkr/openid' into SimonBrandner/feat/url
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-04 17:43:40 +02:00
David Baker
4524b418ff Merge remote-tracking branch 'origin/livekit' into dbkr/openid 2023-07-03 17:03:58 +01:00
David Baker
f2eabec382 Be stricter with what is passed in to the openid components 2023-07-03 16:21:56 +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
23b8a61e7a Provide sfu config via context 2023-06-30 18:12:58 +01:00
David Baker
4548c1af23 Merge remote-tracking branch 'origin/livekit' into dbkr/openid 2023-06-30 10:11:53 +01:00
Šimon Brandner
8cafe0f25d Remove roomAvatarUrl from MatrixInfo
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-06-29 08:03:30 +02: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
Robin Townsend
25eb56418d Show the room avatar rather than the user avatar in the header
It's supposed to be the room avatar; this was a regression introduced during the LiveKit hack week.
2023-06-23 16:20:15 -04:00
Robin Townsend
45915ed67e Fix device selection never completing in widget mode
By reinstating some of the code from the full mesh branch that was there to handle this
2023-06-23 14:17:51 -04: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
160d1f23a9 fi Crash if no device is available (#1116)
Signed-off-by: Timo K <toger5@hotmail.de>
2023-06-15 00:06:51 +02:00
Robin Townsend
93bc28c1a6 Merge branch 'livekit-experiment' into merge-main 2023-06-12 11:19:52 -04:00
Timo
4dcd1e176f respect mute state set in lobby for call (#1102)
Signed-off-by: Timo K <toger5@hotmail.de>
2023-06-12 15:35:54 +02:00
Robin Townsend
ab97f12947 Merge branch 'main' into livekit-experiment 2023-06-09 17:22:34 -04:00
Daniel Abramov
28fe813b76 Move LiveKit module into its own directory 2023-06-09 18:31:29 +02:00
Robin Townsend
47a4c5aa88 Don't show the quality survey if the app is a widget
As explained by the comment, we don't yet have designs that account for this combo.
2023-06-07 14:19:53 -04:00
Timo
2a6981c58d Add quality survey at the end of the call (#1084)
Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Robin <robin@robin.town>
2023-06-07 16:22:44 +02:00
Daniel Abramov
ee1819a0b6 Quick way to replace matrix JS SDK with LiveKit 2023-06-02 17:02:47 +02:00
Daniel Abramov
f4f5c1ed31 Start using LiveKit SDK for media devices
This version is not supposed to properly work, this is a work in
progress.

Main changes:
* Completely removed the PTT logic (for simplicity, it could be
  introduced later).
* Abstracted away the work with the media devices.
* Defined confined interfaces of the affected components so that they
  only get the data that they need without importing Matris JS SDK or
  LiveKit SDK, so that we can exchange their "backend" at any time.
* Started using JS/TS SDK from LiveKit as well as their React SDK to
  define the state of the local media devices and local streams.
2023-05-30 15:21:22 +02:00
Robin Townsend
f1ee3604de Make Element Call work in Firefox's resist fingerprinting mode
This one is gonna take some explaining:

When in resist fingerprinting mode, Firefox exhibits some funny behavior: when we ask for the the list of media devices, it gives us fake device IDs. But when the js-sdk requests a stream for any of those devices, Firefox associates the stream with the real device ID.

Now, in order to get the names of devices included in their metadata when you query the device list, you need to be holding a stream. For this reason, useMediaHandler was set up to reload the device list whenever matrix-js-sdk got a new local stream. But because of the inconsistency in device IDs, it would enter an infinite cycle telling matrix-js-sdk to request a stream for the fake device ID, but with matrix-js-sdk always responding with the real device ID.

I already wasn't happy with useMediaHandler's use of @ts-ignore comments to inspect private js-sdk fields, and in the meantime we've come up with a simpler function for requesting device names, so I decided to refactor useMediaHandler to use it instead. Importantly, it doesn't break in resist fingerprinting mode.

This created a new UX issue though: now, when on the lobby screen, useMediaHandler would request microphone access so it could get device names, followed immediately by a *second* pop-up for the lobby screen to request camera access. That's 1 pop-up too many, so I changed useMediaHandler to only request device names when a component is mounted that actually wants to show them. Currently, the settings modal is the only such component, and users normally only open it *after* granting full audio/video access, so this solution works out quite nicely.
2023-05-15 23:13:18 -04:00
Robin
6f4ab0d3ab Merge pull request #900 from abhijain2003/abhijain2003/loadingui
changes Loading room... to Loading...
2023-05-10 09:36:33 -04:00
David Baker
9442b314b2 Fix PostHog in embedded mode
Embedded mode has a differtent path to join the call and we missed
changing the groupCall.enter() function for the wrapper that does
analytics.
2023-04-17 18:47:46 +01:00
David Baker
31450219c8 More work on opentelemetry event reporting
Moastly a re-org to avoid new contexts over React component unmounts/
remounts.
2023-03-16 14:41:55 +00:00
David Baker
c519e13885 Version that does at least send some traces 2023-03-15 16:00:39 +00:00
Timo K
4c59638d00 otel for call start, end and mute
This is send over zipkin.
And it uses a posthog exporter to export events to posthog
using a _otel prefix
2023-03-10 10:33:54 +01:00
Timo
0423a494c4 Checkbox for analytics opt in & settings redesign (#934) 2023-03-01 13:47:36 +01:00
Abhi Jain
33dd2758d7 change ... to … unicode for consistency 2023-02-13 09:55:32 +05:30
Abhi Jain
d40e467b7d changes Loading room... to Loading... 2023-02-08 14:26:56 +05:30
David Baker
9ba4ce429f Disable keyboard shortcuts when feedback modal is open 2023-01-12 17:31:19 +00:00
Timo
67d1c29d6a decrease wait after call ended to 10ms (#825)
* decrease wait after call ended to 10ms

* new order of widget requests to avoid pip flicker
2023-01-05 00:01:57 +01:00
David Baker
62e4e80ca3 Merge pull request #818 from vector-im/dbkr/fix_copyright_headers
Fix copyright headers
2023-01-03 22:56:40 +00:00
David Baker
df9c1fed2a Fix copyright headers
This is an Element project (in the vector-im repo) so the Copyright
should be for New Vector: it was incorrectly attributed to the
foundation for some files (and some files were missing headers).
2023-01-03 16:55:26 +00:00
Timo
05be247946 send posthog callEnded events instantly in embedded mode (prohibit missing events) (#816)
Signed-off-by: Timo K <timok@element.io>
Co-authored-by: Timo K <timok@element.io>
2023-01-03 17:09:21 +01:00
Timo
e3aa810230 Posthog widget embedding (#767)
* load analytics id from url in embedded mode

Signed-off-by: Timo K <timok@element.io>

* add start call in the widget code path

Signed-off-by: Timo K <timok@element.io>

* send group call id instead of call name

Signed-off-by: Timo K <timok@element.io>

* generate analyticsid based on account analyticsid
This make it impossible to find users from the element web posthog instance
in the element call instance

* move registration type setup PosthogAnalytics.ts

* Order identificaition and tracking.
This fixes an issue that the widget version did not identify the user before sneding
the first track event.
Because start call is called right after app startup.

Signed-off-by: Timo K <timok@element.io>
2022-12-19 12:16:59 +01:00
Robin Townsend
13def24f7e Enable users to join calls from multiple devices 2022-11-21 12:39:48 -05:00