Commit Graph

416 Commits

Author SHA1 Message Date
Daniel Abramov
79018606b2 Simplify overly complicated VideoGrid 2023-06-06 13:14:02 +02:00
Daniel Abramov
b11ab01bbe Remove the unused exports with help of ts-prune 2023-06-05 19:11:38 +02:00
Daniel Abramov
8b533018ea Remove unused stuff from video-grid 2023-06-02 21:34:59 +02:00
Daniel Abramov
ed581189a8 Fix shortcuts mix 2023-06-02 21:29:22 +02:00
Daniel Abramov
b1d7631994 Fix LiveKit's device selection during the call 2023-06-02 19:55:41 +02:00
Daniel Abramov
991129e470 Experimental version of LiveKit with EC that works! 2023-06-02 19:12:28 +02:00
Daniel Abramov
ee1819a0b6 Quick way to replace matrix JS SDK with LiveKit 2023-06-02 17:02:47 +02:00
Daniel Abramov
fb9dd7ff71 Use LiveKit's react hooks for devices
More reliable device management.
2023-05-30 20:56:25 +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
9c2f4be17c Bring back the rageshake request modal 2023-05-22 15:30:29 -04:00
Robin Townsend
eeb1f4baaf Merge branch 'main' into SimonBrandner/feat/settings 2023-05-22 12:49:57 -04:00
Robin
568c989ff7 Merge pull request #1069 from robintown/hide-rageshake-request
Hide the rageshake request modal when the window is too small
2023-05-22 09:21:30 -04:00
Michael Kaye
8451296f3a Merge pull request #1052 from vector-im/michaelk/test_hanging_up_call
Add ability to explicitly hang up the call
2023-05-18 18:32:38 +01:00
Robin Townsend
c01e363639 Hide the rageshake request modal when the window is too small 2023-05-17 13:59:15 -04: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
Michael Kaye
d270756443 Useful to be able to hang up rather than close the window. 2023-05-12 16:25:24 +01:00
Michael Kaye
9587dd7352 Prettier 2023-05-11 15:16:17 +01:00
Michael Kaye
099dcd28c7 Test tags for invite links; joining call by UR:; getting call name. 2023-05-11 14:30:32 +01:00
Robin
6f4ab0d3ab Merge pull request #900 from abhijain2003/abhijain2003/loadingui
changes Loading room... to Loading...
2023-05-10 09:36:33 -04:00
Enrico Schwendig
4181780040 change stats interval to 10s (#1038) 2023-05-05 16:14:19 +02:00
Šimon Brandner
0269753f59 Settings improvements
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-05-05 11:44:35 +02:00
Michael Kaye
2318f2c4a0 prettier -w 2023-05-02 17:33:56 +01:00
Michael Kaye
4e8146bc9c Add screenshare tags 2023-04-27 09:42:25 +01:00
Michael Kaye
323dba620d Add a range of data-testid tags to be able to cleanly identify parts of the application. 2023-04-27 09:42:25 +01:00
Enrico Schwendig
e3a3859739 Make webrtc stats configurable (#1019)
* stats: make webrtc stats configurable
2023-04-27 09:30:34 +02:00
Robin
8437e263af Merge pull request #1013 from robintown/controls-overlay
Keep inspector from covering call buttons
2023-04-20 10:45:36 -04:00
Robin Townsend
56bd54a645 Disable keyboard shortcuts when focus is in a modal 2023-04-19 15:51:44 -04:00
Robin Townsend
6ad4663508 Keep inspector from covering call buttons 2023-04-19 14:43:37 -04:00
David Baker
8eafb1ae4a Merge pull request #1005 from robintown/parallel-calls
Detect split-brains caused by parallel calls
2023-04-18 17:29:23 +01:00
Robin Townsend
838137c83b Detect split-brains caused by parallel calls
This is another KPI for PostHog.
2023-04-17 16:58:51 -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
Robin Townsend
711cdf9a60 Merge branch 'main' into audio-observability 2023-04-05 12:50:38 -04:00
Enrico Schwendig
390442a4c3 Add webrtc metric to OTel (#974)
* stats: Add summery report

---------

Co-authored-by: David Baker <dave@matrix.org>
2023-04-05 10:25:26 +02:00
Robin
e0089a0aee Merge pull request #958 from robintown/forced-opt-in
Opt into analytics by default during the beta
2023-04-04 09:27:01 -04:00
David Baker
5e6c33b3b5 Let otel know we're joining before trying to join
Otherwise it starts getting calls being created before the group call
span exists and we get call spans not associated with the group call
span.

(What 74b218af8c should have been)
2023-03-31 10:30:01 +01:00
David Baker
c2b78d59c6 Add more events:
* VoIP events received
 * Call errors
 * Group call errors
 * Undecryptable to-device events
2023-03-30 16:54:10 +01:00
David Baker
21458c8840 Call the same leave method everywhere
So we end the group call span whenever we leasve the call, including
if we close the page.
2023-03-30 13:03:58 +01:00
David Baker
34a72679a1 Merge remote-tracking branch 'origin/main' into dbkr/otel 2023-03-29 12:30:41 +01:00
David Baker
77c6357b08 Use js-sdk from hangup refactor branch
https://github.com/matrix-org/matrix-js-sdk/pull/3234
2023-03-29 12:28:04 +01:00
Robin Townsend
313ebe258e Add end-to-end audio observability
This reports via OpenTelemetry when particular participants are speaking, as an easy way to observe the delivery of audio in calls.
2023-03-22 14:23:26 -04:00
Robin Townsend
76c0277301 Update matrix-js-sdk 2023-03-22 11:41:41 -04:00
David Baker
9c0adfd32e Unused import 2023-03-22 12:00:34 +00:00
David Baker
3d6ae3fbc3 Enable/disable opentelemetry based on config/user preference
Add config to set collector URL, obey the same analytics setting as
posthog. Also refactor into a class to make it easier to manage.
2023-03-22 11:55:21 +00:00
David Baker
9b02d17224 Merge branch 'main' into dbkr/otel 2023-03-20 19:20:13 +00:00
David Baker
6b36604c84 Update js-sdk 2023-03-20 19:17:50 +00:00
alariej
1bf1813a77 Fix for Android WebView, which does not support navigator.mediaSession 2023-03-17 17:20:16 +01:00
David Baker
521b0a857a Send spans for state events 2023-03-16 18:08:28 +00: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
Robin Townsend
971eca59ff Opt into analytics by default during the beta 2023-03-13 19:12:47 -04:00