Commit Graph
53 Commits
Author SHA1 Message Date
TimoandGitHub 4aec5c34f3 Firefox audio output issues fix (#1510)
---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-09-19 15:10:14 +02:00
Robin 4253963b95 Untangle the semantics of isEmbedded
This deletes the isEmbedded flag from UrlParams, replacing it with an alternative set of flags that I think is more sensible and well-defined.
2023-09-18 21:00:18 -04:00
Robin 9db21e024e Start using the new modal component
This attempts to converge all our modals on the new modal component while changing their designs as little as possible. This should reduce the bundle size a bit and make the app generally feel like it's converging on the new designs, even though individual modals still remain to be revamped.
2023-09-17 14:46:36 -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 7bee0de014 Disable E2EE settings on unsupported browsers
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-26 15:46:08 +02: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 fa2fcbcbec Hide E2EE behind a flag
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-25 11:07:20 +02:00
Šimon Brandner 856158bf34 Hide media device sections in settings if empty
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-24 12:12:02 +02:00
Robin Townsend 8903930d56 Respond to review feedback 2023-07-21 00:00:04 -04:00
Robin Townsend 72eca769a4 Put the settings tabs back in the right order 2023-07-14 14:08:42 -04: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 cc2808a1da Fix audio being muted when joining a call
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-10 14:27:19 +02:00
Šimon Brandner 9ecbfbffc7 Don't show profile settings in embedded mode
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-10 11:13:57 +02:00
TimoandGitHub 9be9250124 Combined permission request with newer livekit sdk version (#1200)
---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-07-07 14:41:29 +02: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
RobinandGitHub 4fd1264d12 Merge pull request #1123 from robintown/connection-indicators
Hide connection quality indicators behind a developer setting
2023-06-16 12:56:36 -04:00
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
Robin Townsend a96d70eefb Hide connection quality indicators behind a developer setting
Calls are an environment with high cognitive load, so it's important that we keep extra UI elements like these to a minimum and stick to what's been explicitly designed. I assume that this was here as a developer feature to diagnose reliability of the back end components, which is perfectly fine, so I've kept it behind a developer setting rather than fully removing it.
2023-06-16 10:59:57 -04:00
Robin Townsend 2916eb45aa Switch to the new grid once there are >12 participants 2023-06-13 12:54:24 -04:00
Robin Townsend ab97f12947 Merge branch 'main' into livekit-experiment 2023-06-09 17:22:34 -04:00
Daniel Abramov b1d7631994 Fix LiveKit's device selection during the call 2023-06-02 19:55:41 +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 cf1a7f2e21 Match settings modal to design nuances better 2023-05-22 15:12:41 -04:00
Robin Townsend eeb1f4baaf Merge branch 'main' into SimonBrandner/feat/settings 2023-05-22 12:49:57 -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
93a47e7009 Fix casing
Co-authored-by: Robin <robin@robin.town>
2023-05-05 19:17:59 +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
Robin Townsend 4114622d44 Remove the keyboard shortcut setting 2023-04-19 16:15:38 -04:00
Robin Townsend 5f41f9476b Disable the opt in analytics setting if Posthog isn't configured 2023-03-23 13:07:34 -04:00
Robin Townsend 971eca59ff Opt into analytics by default during the beta 2023-03-13 19:12:47 -04:00
TimoandGitHub 0423a494c4 Checkbox for analytics opt in & settings redesign (#934) 2023-03-01 13:47:36 +01:00
Enrico SchwendigandGitHub 1548a5673f Extend developer view with media debug information (#909)
* interceptor: add MediaStream feed debug interceptor

- interceptor displays nick name for default and nick name + user id if user gast
- interceptor displays track id  + media stream ids
2023-02-15 16:04:05 +01:00
Robin Townsend 69e6ba93c1 Add a switch to toggle between the new and old grids 2023-02-13 20:36:42 -05:00
Šimon Brandner 807a6a8545 Add call feed size debug info
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-01-30 20:43:21 +01: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
David Baker 223793a445 Make spatial audio Firefox-only
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.
2022-12-16 17:12:17 +00:00
Erik Johnston a2bbe61292 Update help text 2022-11-14 20:58:39 +00:00
Erik Johnston 4cd49dee4b Update description 2022-11-14 16:11:42 +00:00
Erik Johnston 0aadb7e60c Add a straw man description to the setting 2022-11-14 11:29:42 +00:00
Erik Johnston b30ef953b4 Put keyboard shortcuts behind settings flag 2022-11-14 10:24:03 +00:00
Robin Townsend ca6d75e384 Improve the analytics opt-in copy 2022-11-08 07:53:17 -05:00
bcbc20b53d Create advanced section for telemetry checkbox (#725)
Signed-off-by: Timo K <timok@element.io>
Co-authored-by: Timo K <timok@element.io>
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-11-05 11:13:56 +01:00
72503d0335 Add posthog Telemetry (Anonymity Logic + call duration telemetry) (#658)
Co-authored-by: Timo K <timok@element.io>
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-11-04 13:07:14 +01:00
Robin Townsend 8524b9ecd6 Set up translation with i18next 2022-10-12 14:53:49 -04:00
TimoandGitHub 2d99acabe2 typescript src/room (#437) 2022-08-02 00:46:16 +02:00
Johannes Marbach 1308e52e42 Enumerate devices 2022-07-07 12:10:08 +02:00
Johannes Marbach f6d356c5ce Prettify the thing 2022-07-07 10:31:44 +02:00
Johannes Marbach eb2de869b8 Prevent empty device labels
Fixes: #324
Signed-off-by: Johannes Marbach <johannesm@element.io>
2022-07-07 10:21:38 +02:00
Timo K 9b2e99c559 use React.ChangeEvent in SettingsModal 2022-06-11 14:28:54 +02:00