Commit Graph

124 Commits

Author SHA1 Message Date
Timo
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
Šimon Brandner
1cb0ad2f65 Switch to Avatar from Compound
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-09-06 08:04:51 +02:00
Šimon Brandner
c7c6e2c007 Merge pull request #1358 from vector-im/SimonBrandner/feat/e2ee-on 2023-08-31 11:32:27 +02:00
Šimon Brandner
1b2287646d Enable E2EE by default
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-08-30 12:19:21 +02:00
Robin Townsend
aa628cc63c Adopt the Compound color system
As a first step towards adopting the Compound design system and the new Element Call designs, this pulls in Compound's color tokens and applies them to all existing components. I've tried to choose tokens based on the semantics of where they're used, but in some cases, where the new and old design systems differ in semantics, it was necessary to choose tokens based on their resulting color. These hacks can be removed as we implement more of the new designs.

There were a set of environment variables that we used for custom themes, but Compound has way too many design tokens for that approach to still be a good idea, so I decided to replace them all with a single environment variable that just lets you write arbitrary custom CSS.
2023-08-28 17:14:40 -04:00
Šimon Brandner
8facf7808b Merge remote-tracking branch 'upstream/livekit' into SimonBrandner/feat/hash 2023-08-10 09:43:05 +02:00
Robin
44dd860cb8 Merge pull request #1311 from robintown/error-view-rageshake
Add a rageshake button to the generic error view
2023-08-09 09:31:58 -04:00
Šimon Brandner
c4e5e1afb1 Save room shared keys to local storage
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-08-09 14:01:36 +02:00
Šimon Brandner
8fdc1e3684 Store shared keys in local storage
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-08-09 14:01:34 +02: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
Robin Townsend
8f7e6d70d3 Add a rageshake button to the generic error view 2023-07-26 11:20:18 -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
David Baker
d66f045743 Merge remote-tracking branch 'origin/livekit' into dbkr/react_to_livekit_disconnect 2023-07-24 21:35:09 +01:00
David Baker
8e6380db0b Fix logs component states
Also just display text when sending which makes the button jump around
a bit but avoids hardcoding the width
2023-07-24 21:33:13 +01: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
922d66d66b Merge branch 'livekit' into settings-tab-order 2023-07-20 23:54:47 -04: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
Robin Townsend
2d3d58cdc7 Fix avatar field in profile settings being hidden
It was being hidden when you didn't yet have an avatar set, which made it impossible to ever set one.
2023-07-14 14:48:50 -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
Timo
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
Robin Townsend
c181d250ac Note the call backend in rageshake and analytics data 2023-06-23 14:47:32 -04:00
Robin
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
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
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
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
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
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
b11ab01bbe Remove the unused exports with help of ts-prune 2023-06-05 19:11:38 +02: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
3c118f0cf7 Add a comment 2023-05-22 15:44:39 -04:00
Robin Townsend
ae40dea7ec Make the profile form autosave 2023-05-22 15:12:41 -04:00
Robin Townsend
85380c8142 Make width of profile tab conform to designs 2023-05-22 15:12:41 -04: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
Šimon Brandner
6cad89b20c Add success message
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-05-05 19:36:23 +02:00
Šimon Brandner
4c1168aaf7 Feedback copy
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-05-05 19:29:11 +02:00
Šimon Brandner
57e79862a5 User ID -> Username
Co-authored-by: Robin <robin@robin.town>
2023-05-05 19:18:34 +02:00