Commit graph

359 commits

Author SHA1 Message Date
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
Enrico Schwendig
29e41c7227
Allow Element Call to be started without audio / video interface (#924)
* config: add feature in `config.json`

* groupCall: adjust connection state in feed if allowCallWithoutVideoAndAudio

* matrix-js-sdk: update version for allowCallWithoutVideoAndAudio

- I modified the SDK so that mute unmute work without media and check device permission inside the SDK
- allowCallWithoutVideoAndAudio is only checked at one point outside the SDK

* docu: add join group call without media docu in READMe

---------

Co-authored-by: Robin Townsend <robin@robin.town>
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-03-02 18:48:32 +01:00
Timo
0423a494c4
Checkbox for analytics opt in & settings redesign (#934) 2023-03-01 13:47:36 +01:00
Robin Townsend
58ed372afa Fix type and lint errors 2023-02-13 21:57:57 -05:00
Robin Townsend
69e6ba93c1 Add a switch to toggle between the new and old grids 2023-02-13 20:36:42 -05:00
Robin Townsend
b2b2f0bb15 Merge branch 'main' into big-grid 2023-02-13 18:54:19 -05:00
David Baker
605dd44df0 Rename other instance of variable 2023-02-13 15:49:58 +00:00
David Baker
07a4de638f Don't pause audio streams on media actions
This adds handlers for the media actions to do nothing, otherwise
they cause the audio element for a random participant to get paused.

Fixes https://github.com/vector-im/element-call/issues/855
2023-02-13 15:20:48 +00: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
Robin Townsend
6adcf95aaa Implement different column counts and mobile layout 2023-02-04 00:43:53 -05:00
David Baker
579b91abff
Revert "Yarn upgrade" 2023-02-02 14:32:44 +00:00
David Baker
e1abbd5291 Yarn upgrade
Along with some type fixes to make typescript happy again. Hopefully
they are sensible.
2023-02-02 12:49:54 +00:00
Robin Townsend
6784d2ba97 Remove redundant key prop 2023-02-01 11:50:25 -05:00
Robin Townsend
0166eb67fb Make avatars scale smoothly during animations 2023-01-30 23:43:45 -05:00
Robin Townsend
4e73c07cb2 Try out scroll snapping 2023-01-30 09:35:40 -05:00
David Baker
d2631a3e02 Fix the rageshake modal on mobile
As per comment

Unsure if this is the best fix - ideally we wouldn't go into no-controls
mode at all, but this part doesn't know whether the dialog is open so
the only thing we could really do is tweak the threshold, or possibly
guess based on width instead?
2023-01-23 17:52:02 +00:00
David Baker
d65464e4db Avoid duplicate PTT button 'unhold' events
We called the 'unhold' function even if the button wasn't held which
probably will have been generating unmute events even when we weren't
muted.

Also use separate handlers for events so we can have specific log lines
(and also see where the event comes from when caught in the debugger).
2023-01-23 16:53:24 +00:00
Robin Townsend
59f3b05c07 Merge branch 'main' into big-grid 2023-01-23 08:57:04 -05:00
David Baker
4f8bd18efd Don't try to register users until client is loaded 2023-01-20 17:59:57 +00:00
David Baker
47c2e9e101 Don't crash if we can't find our own member event 2023-01-20 12:10:58 +00:00
David Baker
81997624d4 Fix joining rooms by ID
We use this in embedded mode. Regressed by https://github.com/vector-im/element-call/pull/860

Lowercasing room IDs obviously makes them break, so… don't do that.
2023-01-20 10:51:52 +00:00
David Baker
524f530dce Lowercase room alias before joining 2023-01-19 19:20:42 +00:00
Robin Townsend
d3fba7fd5f WIP minus unfinished split grid layouts 2023-01-18 10:52:12 -05:00
David Baker
abd909c03a Log undecryptable to-device events
Listen for the new undecryptable to-device event event and log
events for it in Posthog & Sentry, and make it visible in the
call flow diagram.
2023-01-13 18:27:22 +00:00
David Baker
a5977fc992 Rename to useCallViewKeyboardShortcuts 2023-01-13 11:52:40 +00:00
David Baker
9ba4ce429f Disable keyboard shortcuts when feedback modal is open 2023-01-12 17:31:19 +00:00
Timo
e5135a41ba
Add call id to mute events (#827) 2023-01-05 11:05:22 +01: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
1830acbddf Fix copyright pt. 2: CSS files 2023-01-03 16:58:38 +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
David Baker
de0f2e65a5 Don't show option to submit bug reports if no endpoint configured 2022-12-22 14:12:49 +00:00
David Baker
d7d7bee685 Remove the overflow menu button in fullscreen mode
It didn't work and fixing it is a bit of a project: see comment

https://github.com/vector-im/element-call/issues/807
2022-12-22 12:16:05 +00:00
David Baker
96de515e56 Move default homeserver to config file 2022-12-20 17:26:45 +00:00
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
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 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
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 Townsend
13def24f7e Enable users to join calls from multiple devices 2022-11-21 12:39:48 -05: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
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
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
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
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
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
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
7932d7a471 Disable animations for users that prefer reduced motion 2022-10-31 11:46:17 -04: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
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
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 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
bf94a5dcaf Make more of the lobby translateable 2022-10-24 10:17:12 -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
Š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
97ae11f656 Fix fullscreen buttons fullscreening the wrong feed 2022-10-17 12:31:56 -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 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
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
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 Townsend
fdc0272940 Show a reduced set of controls when the window is narrow 2022-09-26 20:36:51 -04: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
Robin Townsend
89fa9dfd64 Only maximise a participant when the window is narrow, too 2022-09-16 10:23:23 -04:00
Robin Townsend
9e367db324 Maximise the active speaker when the window is small 2022-09-14 19:05:05 -04:00
Robin Townsend
8725b2c230 Unpersist widget after hanging up
Otherwise it can get stuck on screen in Element Web.
2022-09-12 22:54:20 -04:00
Robin Townsend
b7be3011da Add widget actions for joining and leaving calls and switching layouts
These actions are processed lazily to ensure that even if the app takes a while to start up, they won't be missed.
2022-09-09 02:14:12 -04:00
Robin Townsend
3186b5f24b Add a URL parameter for hiding the room header 2022-09-09 02:04:53 -04:00
David Baker
70dffe95ff Handle groupcall being null 2022-09-07 11:42:37 +01:00