Commit Graph

1028 Commits

Author SHA1 Message Date
David Baker
4ad5ea49c2 Merge remote-tracking branch 'origin/main' into dbkr/spatial_audio_ff_only 2022-12-19 13:18:12 +00: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
David Baker
c6ad2003f0 Add other missing file 2022-12-16 17:28:52 +00:00
David Baker
9aed344a80 Add missing file 2022-12-16 17:25:28 +00:00
David Baker
0c55efe4b6 Don't reorder imports - 3rd time's a charm 2022-12-16 17:20:52 +00:00
David Baker
c93df1fd06 Don't reorder import try 2 2022-12-16 17:19:40 +00:00
David Baker
c30eb19021 Don't reorder imports 2022-12-16 17:18:52 +00:00
David Baker
2d8c33d66d Merge remote-tracking branch 'origin/main' into dbkr/spatial_audio_ff_only 2022-12-16 17:17:30 +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
Robin Townsend
102ce87bb0 Hide controls completely in picture-in-picture view
This is to prepare for upcoming design changes to the picture-in-picture view in Element Web.
2022-12-13 18:20:30 -05:00
Robin
f9845617b3
Merge pull request #783 from robintown/font-params
Add URL params to control fonts
2022-12-10 18:55:35 -05:00
Robin Townsend
32168fb467 Update the leave icon 2022-12-09 14:41:43 -05:00
Robin Townsend
acc41c532e Add URL params to control fonts
This was also a good chance to switch to the semantic font size names used in Compound.
2022-12-09 14:31:13 -05:00
Šimon Brandner
6d8ae91b6c
Don't expose calls on GroupCall
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-12-04 15:50:21 +01:00
Robin Townsend
0a38395bdc Subtly animate video tile toolbars 2022-12-02 12:44:31 -05:00
Robin Townsend
44e22e2684 Don't start new calls in widget mode
In widget mode, it's the client's duty to start the call.
2022-11-29 15:47:39 -05:00
Robin
aa828fe9f5
Merge pull request #761 from robintown/update-js-sdk
Enable users to join calls from multiple devices
2022-11-28 16:37:15 -05:00
Robin Townsend
5ba7267164 Fix lints 2022-11-28 16:15:47 -05:00
David Baker
9c08a69226 Add import
And also Prettier says hi apparently
2022-11-23 10:11:55 +00:00
David Baker
40a0958e0d
Use useCallback
Co-authored-by: Robin <robin@robin.town>
2022-11-23 10:06:14 +00:00
David Baker
098be75415 Fix click leaking through to DOM element underneath
See comment, although this is quite hack - I'm torn on whether this
is worth it for the bugfix. Upgrading react-aria doesn't fix it either
(and also breaks everything in React strict mode).

Fixes https://github.com/vector-im/element-call/issues/762
2022-11-22 19:01:50 +00:00
Robin Townsend
13def24f7e Enable users to join calls from multiple devices 2022-11-21 12:39:48 -05:00
David Baker
eab8b1d095 Put rageshake request ID in title of debug log submission 2022-11-17 16:06:41 +00:00
David Baker
b92acd4822
Merge pull request #752 from vector-im/dbkr/waiting_for_media
Add a 'waiting for video' state to media tiles
2022-11-16 16:41:27 +00:00
David Baker
93aafb1415
Remove mystery blank line
Co-authored-by: Robin <robin@robin.town>
2022-11-16 16:39:35 +00:00
David Baker
734d330a10 CamcelCase for enum values 2022-11-16 10:45:49 +00:00
David Baker
5623fa415f Also update connection states when participants change 2022-11-15 17:33:58 +00:00
David Baker
f2746ab994 Pass user's connection state for their screenshare feed 2022-11-15 17:19:09 +00:00
David Baker
80f07a5454 Add a 'waiting for video' state to media tiles
This will show if the call is waiting for media to connect (in practice
doesn't actually seem to happen all that often) but also show if the
media connection is lost, with the js-sdk change.

Requires https://github.com/matrix-org/matrix-js-sdk/pull/2880
Fixes: https://github.com/vector-im/element-call/issues/669
2022-11-15 16:13:33 +00:00
Erik Johnston
a2bbe61292 Update help text 2022-11-14 20:58:39 +00:00
Erik Johnston
6855e61c47 Correctly handle window losing focus 2022-11-14 20:58:39 +00:00
Erik Johnston
d09c3d8374 Add 'v' shortcut 2022-11-14 16:14:16 +00:00
Erik Johnston
67b97e63ca Use useEventTarget 2022-11-14 16:12:19 +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
c67e7ebc2c Put PTTButton shortcuts behind the new shortcut 2022-11-14 10:40:02 +00:00
Erik Johnston
b30ef953b4 Put keyboard shortcuts behind settings flag 2022-11-14 10:24:03 +00:00
Erik Johnston
c9330debd4 Lint take2? 2022-11-11 16:02:24 +00:00
Erik Johnston
456194312b Lint 2022-11-11 16:00:32 +00:00
Erik Johnston
cb85733426 Add 'm' and 'space' shortcuts for mute/unmuting during a call 2022-11-11 15:53:58 +00:00
Robin
6ef41b924d
Merge pull request #743 from robintown/config
Improve config documentation and setup
2022-11-11 08:19:40 -05:00
David Baker
24299c09b1
Merge pull request #747 from vector-im/dbkr/create_room_logging
Make room / call creation logging more accurate
2022-11-10 21:56:18 +00:00
David Baker
ab860b8655
Use logger
Co-authored-by: Robin <robin@robin.town>
2022-11-10 21:43:49 +00:00
David Baker
f69e032a52
Use logger (and fix typo)
Co-authored-by: Robin <robin@robin.town>
2022-11-10 21:43:40 +00:00
David Baker
bd08166a50 Make room / call creation logging more accurate
It said it was creating the room when actually it was creating the call
2022-11-10 19:10:10 +00:00
Robin Townsend
556f975552 Actually remove Matrix Video Chat branding for real 2022-11-09 17:23:22 -05:00
Robin Townsend
0e478f4c20 Add config documentation, and better types 2022-11-09 10:54:04 -05:00
Robin
57bf934bc2
Merge pull request #736 from robintown/missing-audio-logs
Add logs to debug missing spatial audio
2022-11-08 14:53:28 -05:00
Robin Townsend
ca6d75e384 Improve the analytics opt-in copy 2022-11-08 07:53:17 -05:00
David Baker
85b02a3589
Merge pull request #728 from vector-im/dbkr/aria-describedby
Add aria-describedby associations
2022-11-07 22:45:37 +00:00
Robin Townsend
5f84cb5790 Fix lint 2022-11-07 14:03:28 -05:00
Robin Townsend
fb75c1536b Merge branch 'main' into missing-audio-logs 2022-11-07 14:00:22 -05:00
Robin
715bec5949
Merge pull request #737 from robintown/double-audio
Disable spatial audio for the maximized speaker
2022-11-07 13:59:07 -05:00
Timo
01244c1873
Posthog load settings on startup (#734)
Signed-off-by: Timo K <timok@element.io>
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-11-07 18:00:35 +01:00
Robin Townsend
70344fd40f Disable spatial audio for the maximized speaker 2022-11-07 11:50:05 -05:00
Robin Townsend
0a5701b9fa Add logs to debug missing spatial audio
And potentially fix it, by recreating the source node when the stream changes.
2022-11-07 11:46:10 -05:00
David Baker
85959046a5
Merge pull request #727 from vector-im/dbkr/fix_join_call_close_button
Fix close button on join call modal
2022-11-07 14:07:38 +00:00
David Baker
7444763008
Merge pull request #729 from vector-im/dbkr/minor_a11y_fixes
A couple of minor a11y fixes
2022-11-07 14:06:29 +00:00
David Baker
d5a5ce9860 Don't pass potentially undefined 'desc' to useId
Also use the useId that comes with React 18.
2022-11-07 14:05:58 +00:00
David Baker
e5feba8c26 Make Home link description translateable 2022-11-07 12:33:06 +00:00
David Baker
3cac74df24 Add aria-describedBy to textarea and use useID 2022-11-07 12:28:54 +00:00
David Baker
51572b5787 Make onClose required in Modal 2022-11-07 12:23:21 +00:00
Timo
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
David Baker
5c8562088d A couple of minor a11y fixes
Picked up by Axe
2022-11-04 18:31:21 +00:00
David Baker
58e505cd38 Add aria-describedby associations 2022-11-04 18:10:53 +00:00
David Baker
509fd65156 Fix close button on join call modal
It just errored as we didn't pass onClose through to the modal
2022-11-04 17:56:37 +00:00
Timo
cafac39733
moves style init to initializer. fix i18n loading (#723)
Co-authored-by: Timo K <timok@element.io>
2022-11-04 18:29:40 +01:00
Timo
123763afec
Disable posthog in widgets (#726)
Co-authored-by: Timo K <timok@element.io>
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-11-04 17:31:07 +01:00
Timo
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
a47bd13db6 Fix a crash when someone leaves while screensharing 2022-11-03 16:11:57 -04:00
Timo
78a313c373
Async config file (#682)
* initial

* only donwload config once

* formatting

* update sample config

* sentry

* refactor load state

* fix build yaml

* Upper case enums

* change how defaults work. review fixes

* abstract initialization

* copyright

* gitignore styleing

* refactor initialization

* use dafualt as fallback

* internalInstance rename

* review

* remove acidentally added posthog file

* DSN rename

* update Copyright

* remove olm from the initializer

Co-authored-by: Timo K <timok@element.io>
2022-11-03 19:43:41 +01:00
Robin
02e1d602d9
Merge pull request #708 from robintown/join-polish
Improve the visual experience of joining a call
2022-11-03 14:01:22 -04:00
Robin
1e02afe1c1
Merge pull request #709 from robintown/crisp-avatars
Fix blurry avatars
2022-11-03 14:01:04 -04:00
Robin Townsend
2d5f413a1f Improve the visual experience of joining a call
Because useMeasure always returns a width and height of zero on the first render, various call UI elements would flash in and out of existence or animate in from the wrong place when joining a call. This poses an accessibility issue, and is generally unpleasant.
2022-11-02 23:17:36 -04:00
Robin Townsend
093bf7c1a1 Fix blurry avatars 2022-11-02 23:12:43 -04:00
David Baker
42aeecd964
Merge pull request #706 from vector-im/dbkr/fix_ptt_safari
Fix Walkie-Talkie mode in Safari
2022-11-02 20:15:35 +00:00
David Baker
45dbaa968a Fix Walkie-Talkie mode in Safari
We didn't check whether we actually had a video device when seeing
if the current video devices was in the list of devices, so this
caused loops which confused Safari.
2022-11-02 20:03:56 +00:00
Robin
db66700595
Merge pull request #704 from robintown/feedless-tiles
Don't show toolbar buttons on connecting tiles
2022-11-02 12:36:36 -04:00
Robin Townsend
84a92845c3 Don't show toolbar buttons on connecting tiles
Because connecting tiles don't have a feed, clicking the local volume button would cause a soft crash. This also fixes a few strict mode errors in the surrounding area while we're at it.
2022-11-02 12:34:31 -04:00
Robin Townsend
8731f83fb5 Fix a warning about missing keys 2022-11-02 12:15:32 -04:00
Robin Townsend
f1c050c327 Don't doubly initialize the client in strict mode 2022-11-02 11:23:05 -04:00
Robin Townsend
b1083baacf Clean up remaining 'Matrix Video Chat' branding 2022-11-01 22:19:44 -04:00
David Baker
2346ad9b7e
Merge pull request #695 from vector-im/dbkr/fix_missing_tile_bug
Fix missing tile bug
2022-11-01 18:20:23 +00:00
David Baker
feeb9c4e7c Fix missing tile bug
The 'connecting' tile change meant that we could have tiles right
at the start of the call where we wouldn't have before, and in fact
could have tiles for other users before we even had a tile for ourself.
This threw off the logic for ordering tiles which had a special case
for 1:1 calling which assumed that one of the tiles in a 1:1 call was
the local user. In this case, this assumption wasn't true at the very
start of the call, so the tile orders got assigned incorrectly and then
persisted for the rest of the call.

Fixes https://github.com/vector-im/element-call/issues/694
2022-11-01 18:10:11 +00:00
Robin Townsend
37d9e48c0a Add an underline to blue (external) links on hover 2022-10-31 15:16:02 -04:00
Robin
9b3835c166
Merge pull request #689 from robintown/logo-description
Add an accessible description to the logo
2022-10-31 14:44:46 -04:00
Robin
54d903933b
Merge pull request #688 from robintown/load-olm-once
Ensure that Olm is only loaded once
2022-10-31 14:44:33 -04:00
Robin Townsend
dc1e086ea2 Add an accessible description to the logo 2022-10-31 14:03:41 -04:00
Robin
e6eb2e093c
Merge pull request #685 from robintown/reduced-motion
Disable animations for users that prefer reduced motion
2022-10-31 13:45:58 -04:00
Robin Townsend
d4caa1585b Ensure that Olm is only loaded once
React 18's strict mode intentionally mounts all components twice, which was causing Olm to get double-loaded. Also, it doesn't need to be loaded if the app is running as a widget.
2022-10-31 13:43:03 -04:00
Robin Townsend
c25874ced5 Don't log AbortErrors from videos that are never played
It's normal for the play operation on video feeds to be cancelled due to tiles unmounting quickly (especially with React 18's strict mode), but it logs a scary error which can be misleading during debugging.
2022-10-31 12:34:56 -04:00
Robin Townsend
7932d7a471 Disable animations for users that prefer reduced motion 2022-10-31 11:46:17 -04:00
Šimon Brandner
cb5f7a3f84
Avoid Olm loading loop
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-27 16:48:13 +02:00
Robin Townsend
14a1ff7fe4 Switch to the React 18 createRoot API 2022-10-27 09:48:37 -04:00
Robin Townsend
7038a76fc1 Fix type error 2022-10-27 09:43:17 -04:00
Robin Townsend
1a329966ba Show an error when the browser does not support WebRTC 2022-10-27 09:42:27 -04:00
Šimon Brandner
66ecb7c4e9
Merge pull request #667 from vector-im/SimonBrandner/feat/ice-fallback 2022-10-26 17:52:44 +02:00
Šimon Brandner
c4c99c4bcb
Use a better var name
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-26 14:27:41 +02:00
Šimon Brandner
cef88e2894
Add option to allow ICE server fallback
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-26 13:58:41 +02:00
Šimon Brandner
fcaa126147
Add jest
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-26 13:21:06 +02:00
David Baker
b8af9a0733
Merge pull request #648 from vector-im/dbkr/tiles_for_everyone
Show tiles for members we're trying to connect to
2022-10-25 12:56:43 +01:00
Robin Townsend
2b74c2d9ce Merge branch 'main' into matryoshka-rageshake 2022-10-24 13:59:35 -04:00
David Baker
736aa95133 Fix type 2022-10-24 18:58:55 +01:00
David Baker
b39b3c072d
Merge pull request #652 from vector-im/dbkr/fixec_screenshare
Fix screen sharing
2022-10-24 18:54:52 +01:00
Robin Townsend
e1090377f9 Merge branch 'main' into matryoshka-rageshake 2022-10-24 13:50:45 -04:00
Robin
669b1403fc
Merge pull request #663 from robintown/matryoshka-avatar
Fix avatars of remote participants in matryoshka mode
2022-10-24 13:49:32 -04:00
Robin
877726dc3c
Merge pull request #656 from robintown/1-1-freedom
Re-enable focusing tiles in 1:1 calls
2022-10-24 13:49:00 -04:00
Robin Townsend
efe9e6c2b3 Fix avatars of remote participants in matryoshka mode
RoomWidgetClient doesn't do lazy loading, so it only has the state event data to work with and not the lazy loaded user object.

Previously avatars of remote participants were all replaced by fallback avatars.
2022-10-24 13:19:16 -04:00
Robin Townsend
9bdd5b0e58 Make rageshake requests work in matryoshka mode 2022-10-24 12:30:30 -04:00
Robin Townsend
7ad84de9c2 Re-enable focusing tiles in 1:1 calls 2022-10-24 10:22:51 -04:00
Robin Townsend
bf94a5dcaf Make more of the lobby translateable 2022-10-24 10:17:12 -04:00
David Baker
537341da3a Fix storybook 2022-10-24 10:06:38 +01:00
David Baker
247ed95976
Merge pull request #647 from vector-im/dbkr/fix_missing_key
Fix missing key in tab container
2022-10-24 10:02:18 +01:00
Robin Townsend
d26de7d27f Fix joining calls in matryoshka mode without audio or video inputs
The join handler was requesting a stream with both video and audio, even if the system lacked video or audio devices. Requesting one of audio or video is enough to get all device labels.
2022-10-23 13:22:43 -04:00
David Baker
821622f71c Types 2022-10-21 20:28:33 +01:00
David Baker
71dcc94166 Fix screen sharing
* Make the embedded mode screen sharing a request-each-way rather
   than request-and-reply, since replies time out and so can't wait
   for the user.
 * Try normal screen sharing first, then fall back to using the widget
   API if it fails (for lack of a good way of detecting when we
   should be using the widget API).

Fixes https://github.com/vector-im/element-call/issues/649
2022-10-21 20:19:52 +01:00
David Baker
1ea9432769 Show tiles for members we're trying to connect to
This should help give more context on what's going wrong in
splitbrain scenarios.

If users leave calls uncleanly, their tile will remain in until
their member event times out, which will be an hour from when they
joined the call. See https://github.com/vector-im/element-call/issues/639.

Part of https://github.com/vector-im/element-call/issues/616
2022-10-21 17:24:56 +01:00
David Baker
fa4b4eabdf Fix missing key in tab container 2022-10-21 16:26:44 +01:00
Šimon Brandner
4ee6e450b7
Make Element Call screensharing work on desktop
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-20 19:07:27 +02:00
Robin Townsend
178c6496bd yarn prettier:format 2022-10-18 00:48:29 -04:00
Robin Townsend
c5eb9f0b99 Prevent screenshare feeds from collapsing when you're alone in freedom mode
The code was previously confusing focused and presenter tiles quite a bit, and also had a couple different spots that would mistakenly engage 1:1 layout behavior when you're alone with your own screensharing feed.
2022-10-18 00:30:37 -04:00
Robin Townsend
97ae11f656 Fix fullscreen buttons fullscreening the wrong feed 2022-10-17 12:31:56 -04:00
Robin Townsend
43f98e6be6 yarn prettier:format 2022-10-17 09:30:22 -04:00
Robin Townsend
70ba6c3c6b Make avatars work in matryoshka mode
The client just didn't have a homeserver URL to perform media queries against.
2022-10-17 01:46:44 -04:00
Robin Townsend
402f62e09a Consolidate some similar strings 2022-10-14 18:38:33 -04:00
Robin Townsend
684defdc19 Merge branch 'main' into hide-invite 2022-10-14 10:51:41 -04:00
Robin Townsend
5ed2dc6e0e Split room state hooks out into separate files 2022-10-14 10:50:36 -04:00
Šimon Brandner
ce86a6f120
Merge pull request #622 from vector-im/SimonBrandner/feat/hide-screen 2022-10-14 16:49:54 +02:00
Šimon Brandner
96b1a5f296
hideScreensharing
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-14 16:17:50 +02:00
Robin
e9ebccf0df
Merge pull request #619 from robintown/unmute
Leave audio elements unmuted regardless of mute state
2022-10-14 09:59:54 -04:00
Robin Townsend
02b2aef958 Hide the invite button in non-public rooms 2022-10-14 09:40:21 -04:00
Robin Townsend
81771f511c Fix types 2022-10-13 21:25:15 -04:00
Robin Townsend
4728804a33 Leave audio elements unmuted regardless of mute state 2022-10-13 10:49:16 -04:00
Robin Townsend
8524b9ecd6 Set up translation with i18next 2022-10-12 14:53:49 -04:00
David Baker
eca598e28f
Merge pull request #609 from vector-im/dbkr/device_by_name
Use device labels rather than IDs in widget API
2022-09-30 17:28:59 +01:00
David Baker
f808c56121 Type 2022-09-29 17:08:48 +01:00
David Baker
77da0c912f Match device type too
Because lots of audio & video inputs have the same name
2022-09-29 17:07:10 +01:00
David Baker
17613837b6 Hold a user media stream open while we get devices
As per comment.
2022-09-29 13:19:46 +01:00
David Baker
4a5b69800c Use device labels rather than IDs in widget API
device IDs are different for each origin, so won't match up when passed
in & out of widgets. Use the label instead.

For https://github.com/vector-im/element-web/issues/23331
2022-09-27 16:19:48 +01:00
Robin
70d6c3e9bf
Merge pull request #608 from robintown/reduced-controls
Show a reduced set of controls when the window is narrow
2022-09-27 07:54:24 -04:00
Robin Townsend
fdc0272940 Show a reduced set of controls when the window is narrow 2022-09-26 20:36:51 -04:00
Robin Townsend
d90a837714 Make tooltips look more like Element Web's
The only thing they're missing now is animated fading.
2022-09-26 20:17:55 -04:00
Robin
47f7e0e5a0
Merge pull request #605 from robintown/maximized-fill
Let the maximized video feed fill the window
2022-09-26 12:28:53 -04:00
Robin Townsend
2155d9bb80 Let the maximized video feed fill the window
instead of getting letterboxed.
2022-09-26 09:55:39 -04:00
David Baker
46ab10f733 Remove unintentional commenting 2022-09-26 13:03:39 +01:00
David Baker
6e91ec3a0e Clear storage after logout 2022-09-26 13:01:43 +01:00
David Baker
b55aa12100
Merge pull request #602 from vector-im/dbkr/fix_capture_devices_left_on
Fix bug causing mic/webcam to remain open after call
2022-09-23 17:09:39 +01:00
David Baker
ded6a80b58 Fix passworldess user prompt screen
This is how boolean logic works
2022-09-23 15:38:35 +01:00
David Baker
7435f1101a Fix bug causing mic/webcam to remain open after call
Fixes https://github.com/vector-im/element-call/issues/596
2022-09-23 15:35:05 +01:00
David Baker
d9fc9e82ab Fix another cause of split-brain rooms
Wait for the client to start syncing before we attempt to join a
room.

Fixes https://github.com/vector-im/element-call/issues/600 (detailed
bug analysis is also in that issue).
2022-09-23 10:50:42 +01:00