Commit graph

1103 commits

Author SHA1 Message Date
Robin Townsend
22382413dc Make drag and drop mobile-friendly 2023-02-03 15:42:47 -05:00
Robin Townsend
6cd939db0c Fix a crash when there's only 1 tile and it gets shrunk 2023-02-03 09:11:25 -05:00
Robin Townsend
42e4f6ce83 Don't allow the grid to overflow horizontally 2023-02-03 08:44:35 -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
4fc8598e36 Keep tile elements in a stable order 2023-02-01 11:50:52 -05:00
Robin Townsend
6784d2ba97 Remove redundant key prop 2023-02-01 11:50:25 -05:00
Robin Townsend
0915e327e1 Implement somewhat working drag & drop and improve render memoization 2023-02-01 11:32:10 -05:00
Robin Townsend
eedf8a6d1b Make tiles draggable (but not yet droppable) 2023-02-01 00:17:22 -05:00
Robin Townsend
d7db845f3b Scroll snap was a bad idea 2023-01-30 23:52:46 -05:00
Robin Townsend
82c7293308 Replace premature animation optimization with a potentially wiser one 2023-01-30 23:44:19 -05:00
Robin Townsend
0166eb67fb Make avatars scale smoothly during animations 2023-01-30 23:43:45 -05:00
Robin Townsend
e3081c1c06 Try out a snappier spring 2023-01-30 23:32:26 -05:00
Robin Townsend
f540f48461 Fix some layout bugs 2023-01-30 23:32:00 -05:00
Robin Townsend
55dece274f Fix some tile resizing bugs 2023-01-30 17:04:43 -05:00
Robin Townsend
4e73c07cb2 Try out scroll snapping 2023-01-30 09:35:40 -05:00
Robin Townsend
3805a2f20e Format with Prettier 2023-01-29 21:56:07 -05:00
Robin Townsend
4e35984900 Extract tile size change logic into a function 2023-01-29 21:54:53 -05:00
Robin Townsend
e99294c3f1 Simplify some code 2023-01-29 21:45:10 -05:00
Robin Townsend
8912daa922 Make tiles resizable and fix some miscellaneous bugs 2023-01-25 23:51:36 -05:00
Robin Townsend
045103dbc9 Backfill the grid as people leave by moving tiles along paths 2023-01-25 02:30:52 -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
7e1033f5a4
Add colon in comment
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-01-20 09:35:50 +00:00
David Baker
524f530dce Lowercase room alias before joining 2023-01-19 19:20:42 +00:00
Robin Townsend
46d1351d83 More fixes 2023-01-18 13:38:29 -05:00
Robin Townsend
2318d75bc7 prettier 2023-01-18 11:33:40 -05:00
Robin Townsend
486674c442 fixes 2023-01-18 11:32:51 -05:00
Robin Townsend
d3fba7fd5f WIP minus unfinished split grid layouts 2023-01-18 10:52:12 -05:00
David Baker
e1c4042d15 Add units to constant 2023-01-17 10:16:55 +00:00
David Baker
860aff4958 Change rageshake persistence to throttled flushing
Rather than every 30 seconds. This way we'll save logs for sessions
lasting less than 30 seconds which we previously didn't. Also save
on window unload just in case that doesn't catch everything.

Plus remove some more unused params.
2023-01-16 17:27:49 +00:00
David Baker
13b1dcf785 Mostly cosmetic fixes to rageshake
* Remove duplicate copyright header
 * Remove ts-ignores by just using the objects directly rather than via
   event.target
 * Use error.message rather than errorCode which TS doesn't know about
   and may or may not exist.
 * Remove some unused things like the skip rageshake function and
   the option to init rageshakes without storage.
 * Turn single function with a boolean param to make it take two entirely
   separate code paths into two functions.
2023-01-16 16:43:45 +00: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
afdce66896 Merge remote-tracking branch 'origin/main' into dbkr/prevent_keyrepeat_mute_spam 2023-01-13 11:57:02 +00:00
David Baker
1b08a5cac3 Rename file 2023-01-13 11:56:29 +00:00
David Baker
843e7690fa
Merge pull request #845 from vector-im/dbkr/disable_keyboard_shortcuts_rageshake
Disable keyboard shortcuts when feedback modal is open
2023-01-13 11:55:51 +00:00
David Baker
a5977fc992 Rename to useCallViewKeyboardShortcuts 2023-01-13 11:52:40 +00:00
David Baker
f2193302c1 Prevent mute event spam from key repeats 2023-01-12 18:26:21 +00:00
David Baker
9ba4ce429f Disable keyboard shortcuts when feedback modal is open 2023-01-12 17:31:19 +00:00
David Baker
5f26534496 Use IndexedDB storage in dev mode, just without the worker
As per comment, we can't use workers in Vite dev mode. We previously
fell back to the memory store but this ends up with it working significantly
differently in dev mode to production, eg. dev mode would always start
by doing an initial sync, so old to-device messages would arrive again.

There's no need to fall all the way back to the memory store though,
we can use the IndexedDB store without the worker.
2023-01-12 15:17:46 +00:00
Robin
4e0f4a8dc7
Merge pull request #835 from robintown/unmuted-when-speaking
Work around mute state updates being slow
2023-01-09 13:35:05 -05:00
Šimon Brandner
0d151452ba
Merge pull request #833 from vector-im/SimonBrandner/feat/hide-audio 2023-01-09 19:28:04 +01:00
Robin Townsend
4fd76f9599 Work around mute state updates being slow
Since the app already determines when someone is speaking, we can use that information to make it less obvious when to-device messages are being slow to deliver mute state updates.
2023-01-09 11:10:59 -05:00
Šimon Brandner
881054e265
Hide local volume controls for tiles with no audio
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-01-07 10:09:20 +01:00
Robin Townsend
468e389324 Leave audio elements unmuted regardless of mute state 2023-01-06 10:26:10 -05: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
Robin Townsend
faa8f95f97 Reduce the size of the local feed in 1:1 calls at small window sizes 2023-01-04 08:38:24 -05:00
David Baker
11a262b58f
Merge pull request #819 from vector-im/dbkr/prefix_other_fullscreen_apis
Use prefixed versions of other fullscreen APIs too
2023-01-03 22:56:49 +00: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
c34a1f7f65 Use prefixed versions of other fullscreen APIs too 2023-01-03 18:35:00 +00:00
David Baker
70b693ef3c Revert d2175b4
Unintentionally comitted to main
2023-01-03 18:34:27 +00:00
David Baker
d2175b40a4 Use prefixed versions of other fullscreen APIs too 2023-01-03 18:33:11 +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
b9ee9583e4
Fix fullscreen on Safari (#814)
* Fix fullscreen on Safari

Safari only supports it via the webkit prefix

Fixes https://github.com/vector-im/element-call/issues/539

* NOT THAT LOGGER, VSCODE
2023-01-03 11:24:10 +00:00
David Baker
5823cd41e8 Translate separately so the i18n gets less confused 2022-12-22 14:23:19 +00: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
70522ed8da Also add comment 2022-12-21 15:26:24 +00:00
David Baker
3581aceb5a Addd ResolvedConfigOptions back 2022-12-21 15:25:08 +00:00
David Baker
29f48f25f4 Actually remove the bit that's no longer neccessary 2022-12-21 15:17:34 +00:00
David Baker
c879090a34 Re-jig config accessors
We only ever used the static instance() method to get to the config
object, so just make a static instance that returns the ConfigOptions
directly, throwing an exception if it's not yet initialised. This way
the types can all be non-optional (plus it's shorter).
2022-12-21 10:17:53 +00:00
David Baker
6303b357ab Update default homeserver to match what the docs say 2022-12-21 10:01:37 +00:00
David Baker
b3d97810a8 Unused import 2022-12-21 09:44:28 +00:00
David Baker
eaf14a0562 Don't send rageshakes or start sentry if we don't have config for them 2022-12-21 09:42:27 +00:00
David Baker
fd3c0d9fc6 Don't guess the server name from the URL
It only uses the default HS URL anywayso just use the default
server name.
2022-12-21 09:27:25 +00:00
David Baker
c85d1c1d9c Don't touch the product name option for now 2022-12-20 17:30:47 +00:00
David Baker
96de515e56 Move default homeserver to config file 2022-12-20 17:26:45 +00:00
David Baker
7c26bdbda3 Put the maximised conditional back
and comment it
2022-12-19 15:10:25 +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
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