Commit graph

266 commits

Author SHA1 Message Date
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
David Baker
0360889fd6 Log ID instead of object
as otherwise it recurses and logs the entire client + store
2022-09-06 15:11:45 +01:00
David Baker
ee1dd2293e Use new method to wait until a room is ready fopr group calls
We were waiting for the group call event handler to process the room,
but only if we couldn't get the room from the client - if getRoom returned
a room, we just wouldn't wait. This just uses promises rather than
an event to wait for the room to be ready.

Requires https://github.com/matrix-org/matrix-js-sdk/pull/2641
2022-09-06 11:57:07 +01:00
David Baker
30c9dfce02 Remove unused import 2022-09-01 13:36:02 +01:00
David Baker
48ad4d040d Actually wait for the right event
& update js-sdk dependency
2022-09-01 13:32:11 +01:00
David Baker
1b4f097b1c Fix bug where additional group calls could be created
This (hopefully) fixes the remaining bug where extra group calls
could be created when entering a room.

We waited for the Room event to arrive, but didn't wait for the
group call event handler to actually process the event, so it would
have depended what order the event handlers were run in.

If this doesn't fix it, it at least adds logging so we'll have more
to go on next time.

Fixes https://github.com/vector-im/element-call/issues/563
2022-09-01 11:41:22 +01:00
David Baker
e7353e184f Fix groupcall debug info in rageshakes
We were putting the whole array from setState in, so the debug info
was wrapped in an array when it shouldn't be.

Also comment the groupCallInspector setState/context dance which I
now *finally* understand.
2022-08-25 11:43:47 +01:00
David Baker
c550545116 Fix 'submit debug logs' checkbox in the rageshake form
Fixes https://github.com/vector-im/element-call/issues/550
2022-08-23 20:29:41 +01:00
Robin Townsend
ba4258aa89 Fix the call type selector 2022-08-18 18:48:17 -04:00
Šimon Brandner
fc0a3f38ac
Merge pull request #512 from vector-im/SimonBrandner/fix/audio 2022-08-16 10:07:55 +02:00
Šimon Brandner
719156aadf
Fix the Feedback modal not being closable
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-14 10:42:57 +02:00
Šimon Brandner
fd8ade1bf1
Delint
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-14 09:00:36 +02:00
Šimon Brandner
4ac5c2c677
Merge remote-tracking branch 'upstream/main' into SimonBrandner/fix/audio 2022-08-13 18:28:27 +02:00
Robin Townsend
882eed0737 Remove top level matrix-js-sdk imports 2022-08-12 16:46:53 -04:00
Šimon Brandner
e82ed2cbcb
Merge remote-tracking branch 'upstream/main' into SimonBrandner/fix/audio
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-12 20:54:04 +02:00
Timo
51ae1c819a
typescript src/video-grid (#511) 2022-08-12 19:27:34 +02:00
Šimon Brandner
8176d60d96
Show name in 1:1 calls
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-12 10:33:59 +02:00
Šimon Brandner
8b97904144
Fix full-screen audio
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-12 09:53:44 +02:00
Šimon Brandner
0e34f9a464
Add useAudioOutputDevice()
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-12 09:36:46 +02:00
Robin Townsend
5ef3b055ff Merge branch 'main' into matroska 2022-08-09 09:03:02 -04:00
Timo
f554afd6b1
typescript src/input (#487) 2022-08-09 11:44:46 +02:00
Šimon Brandner
5474693711
Merge pull request #502 from vector-im/SimonBrandner/feat/fullscreen 2022-08-09 10:29:26 +02:00
Robin Townsend
f9a41be530 Merge branch 'main' into matroska 2022-08-08 14:46:24 -04:00
Šimon Brandner
dd304d3569
Add missing type
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-08 20:05:15 +02:00
Šimon Brandner
2eff251e0c
Add missing space
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-08 20:01:58 +02:00
Šimon Brandner
305c2cb806
Add support for screen-sharing
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-07 19:09:45 +02:00
Matthew Hodgson
8aa66dddfd fix mirror text on FF by reverting weird css hack.
this reverts some of d1368f4622
it's very unclear why the width of the preview was pushed out to 100%+1px (and the transform then flipped to 1.01)
but i see no ill effects on having reverted it.
2022-08-07 02:43:59 +01:00
Robin Townsend
eb43b96a1b Merge branch 'main' into matroska 2022-08-05 16:16:59 -04:00
Robin Townsend
89312ceb58 Fix types 2022-08-02 13:31:11 -04:00
Robin Townsend
9b915d289b Fix a crash
CallEvent.SendVoipEvent is sent with a raw dictionary, not an actual
MatrixEvent.
2022-08-02 13:21:44 -04:00
Timo
2d99acabe2
typescript src/room (#437) 2022-08-02 00:46:16 +02:00
Šimon Brandner
2537088099
Accompanying changes
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-07-30 10:06:28 +02:00
Robin Townsend
69f19d24a3 Merge branch 'main' into matroska 2022-07-28 16:27:04 -04:00
Šimon Brandner
1d78e2bc20
Merge remote-tracking branch 'upstream/main' into SimonBrandner/feat/audio-share 2022-07-28 18:12:33 +02:00
Robin Townsend
cf56b24dda Add a URL param for room ID
And consolidate our URL params logic
2022-07-27 16:31:48 -04:00
David Baker
32b37ed8f0 Fix 'cannot find room' error
We weren't waiting for rooms to arrive down the sync stream after
joining them but before trying to use them.

More regression details in linked issue.

Fixes https://github.com/vector-im/element-call/issues/477
2022-07-20 16:01:29 +01:00
Šimon Brandner
ce8ac0a81c
Fix formatting
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-07-16 17:54:49 +02:00
Šimon Brandner
e63b3d1b3e
Add support for audio sharing
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-07-16 09:08:38 +02:00
Robin Townsend
996c5f86c1 Refactor to use fewer else's 2022-07-15 16:08:26 -04:00
Robin Townsend
daeecc9b68 Add a missing type 2022-07-15 13:07:19 -04:00
Robin Townsend
fae4c504c9 Consolidate all group call creation into useLoadGroupCall
This enables us to automatically create a group call in rooms that
exist, but contain no calls.
2022-07-15 12:59:54 -04:00
David Baker
5784a005dc Auto-register if displayName URL param is given
Fixes https://github.com/vector-im/element-call/issues/442
2022-07-13 14:34:15 +01:00
David Baker
32907764b3 Add ptt URL param to control what mode rooms are created in 2022-07-11 13:23:03 +01:00
David Baker
5199fd2566 Prettier 2022-07-08 21:17:27 +01:00
David Baker
b31c6c6780 Bypass lobby in embedded mode 2022-07-08 20:55:18 +01:00
David Baker
a81c48cc22 Fix 'waiting for network' after reaching time limit
If you spoke for the maximum amount of time and got cut off, the
next time you tried to speak you'd just get the 'waiting for network'
state. Key repeats would cause more delayed state timeouts to queue
up.
2022-07-08 15:52:32 +01:00
David Baker
572caf6826
Merge pull request #453 from vector-im/dbkr/fix_facepile_display
Fix facepile display issues
2022-07-08 09:59:11 +01:00
David Baker
b0c8ceb302
Merge pull request #455 from vector-im/dbkr/fix_talkover
Fix talking collision not colliding properly
2022-07-08 09:51:26 +01:00
David Baker
2b92bf3694 Fix talking collision not colliding properly
The code was only entering the blocked state if the user was speaking,
which often won't be the case when another person starts speaking because
we'll have pressed the button but not got the ack back from the server
yet. Add the transmitblocked flag instead so we don't enter that state
again if we've already decided we've been blocked.

We were also starting with blocked = false and so resetting it when it
shouldn't have been reset.

Also requires https://github.com/matrix-org/matrix-js-sdk/pull/2502
2022-07-07 19:42:15 +01:00
David Baker
cd42d09ea9 Fix facepile display issues
Fixes https://github.com/vector-im/element-call/issues/434 and a
separate bug where the facepile would just disappear off to the left
(because we kept increasing the size even though we capped the number
of circles at 8 plus the overflow one).
2022-07-07 14:30:28 +01:00
Johannes Marbach
e8d99e15f7 Prevent empty device labels in audio preview
Fixes: #324
Signed-off-by: Johannes Marbach <johannesm@element.io>
2022-07-07 13:32:23 +02:00
David Baker
655058a7e6 Remove the 'Take Me Home' link in embed mode 2022-07-06 18:27:30 +01:00
David Baker
775125c8a7 Fix view when another person is talking
Fixes https://github.com/vector-im/element-call/issues/445
2022-07-06 13:44:17 +01:00
Robin Townsend
4cb2306de0 Make button be constrained primarily by width rather than height 2022-07-05 15:49:48 -04:00
Robin Townsend
f15ee439a9 Fix page layout 2022-07-05 15:41:57 -04:00
Robin Townsend
b9a2473d19 Adapt walkie-talkie layout to hide controls at small sizes 2022-07-05 13:47:53 -04:00
David Baker
2dcf043787 Fix the PTT button on mobile
We were using createRef() instead of useRef() in the hook, which
meant we were always creating a new ref object and never actually
getting the ref. This must have been working before the useEventTarget
stuff due to some quirk of React / hooks...
2022-07-05 11:06:32 +01:00
Robin Townsend
71a819fcf0 Produce a more informative error when running in an insecure context 2022-07-03 10:38:03 -04:00
David Baker
5ebdf3e878
Use has on set
Co-authored-by: Robin <robin@robin.town>
2022-07-01 13:10:51 +01:00
David Baker
7dc6fb27ea Add embed mode
2db23e4110
from postmessage_ptt branch done in a slightly nicer way
2022-06-28 15:08:14 +01:00
Robin Townsend
dcae5ad5f2 Merge branch 'main' into chrome-spatial-aec 2022-06-16 09:56:27 -04:00
Robin Townsend
22dcb883b3 Fix waiting state not disappearing after the 20 second timeout 2022-06-14 23:38:40 -04:00
Robin Townsend
2e945780de Make the 'waiting for network' state work with spacebar 2022-06-14 16:53:56 -04:00
Robin Townsend
2eae6243bb Add a comment 2022-06-14 12:10:17 -04:00
Robin Townsend
276532e2e1 Add a 'waiting for network' state to walkie-talkie mode 2022-06-14 12:00:26 -04:00
Robin Townsend
ee43fcc91f Make AEC work with spatial audio on Chrome 2022-06-13 13:31:44 -04:00
David Baker
1f5ac411f6 Add warning if incompatible versionsd are being used
This will probably be overly sensitive until we start timing out
member events (ie. https://github.com/matrix-org/matrix-js-sdk/pull/2446
lands) because lots of calls might have old member events from people
who've joined previously.
2022-06-09 21:56:58 +01:00
Matthew Hodgson
4f9efb3563 last minute s/radio call/walkie-talkie call/ig 2022-06-07 13:31:19 +01:00
Robin Townsend
977016fbb2 Merge branch 'main' into organize-colors 2022-06-06 09:03:40 -04:00
Robin Townsend
7d87b8d1e5 'Webcam' → 'Camera' 2022-06-02 13:53:31 -04:00
Robin Townsend
aa45261b0d Organize colors 2022-06-01 11:48:17 -04:00
Robin Townsend
d680a36cab Bump the animation size up a little bit more 2022-06-01 10:41:49 -04:00
Robin Townsend
25bde3560b Use color variables 2022-06-01 10:41:12 -04:00
Robin Townsend
ddac2ba5ef Merge branch 'main' into vu-animation 2022-06-01 10:31:04 -04:00
Robin
cd55098921
Merge pull request #365 from robintown/spatial-audio
Spatial audio
2022-06-01 09:17:04 -04:00
Robin
9fac2c95e5
Merge pull request #368 from robintown/radio-button-cursor
Make PTTButton feel more clickable
2022-06-01 09:13:04 -04:00
David Baker
486d0abd30
Merge pull request #363 from vector-im/dbkr/ptt_connection_lost
Show when connection is lost on PTT mode
2022-06-01 10:24:53 +01:00
David Baker
d9bd48b9a6 Split out client sync listeber into separate useEffect 2022-06-01 10:21:44 +01:00
David Baker
64e30c89e3
Comment typo
Co-authored-by: Robin <robin@robin.town>
2022-06-01 10:13:20 +01:00
David Baker
1860eaae7a
Merge pull request #360 from vector-im/dbkr/consistent_sort
Sort call feeds consistently when choosing active speaker
2022-06-01 10:12:56 +01:00
David Baker
771424cbf0 Expand comment 2022-06-01 10:11:02 +01:00
David Baker
925a909ec1
Merge pull request #361 from vector-im/dbkr/usegroupcall_ts
Convert useGroupCall to TS
2022-06-01 10:07:12 +01:00
Robin Townsend
641e6c53b6 Make the animation smaller 2022-05-31 23:41:05 -04:00
Robin Townsend
14fbddf780 Make PTTButton feel more clickable 2022-05-31 18:08:42 -04:00
Robin Townsend
2a69b72bed Add a VU meter-style animation to radio mode 2022-05-31 18:01:34 -04:00
Robin Townsend
c6b90803f8 Add spatial audio capabilities 2022-05-31 13:36:15 -04:00
David Baker
e9b963080c Show when connection is lost on PTT mode 2022-05-30 16:28:16 +01:00
David Baker
1164e6f1e7 Add return type too 2022-05-30 15:53:44 +01:00
David Baker
21c7bb979e Convert useGroupCall to TS 2022-05-30 15:30:57 +01:00
David Baker
1ff9073a1a Sort call feeds consistently when choosing active speaker 2022-05-30 12:14:25 +01:00
Robin Townsend
c057713004 TypeScriptify useInteractiveRegistration 2022-05-27 16:55:50 -04:00
Robin Townsend
cbfd03f9c6 Add a dropdown to choose between video calls and radio calls 2022-05-26 13:52:06 -04:00
Robin Townsend
426e1a433b Make drag-and-drop smoother 2022-05-24 16:37:24 -04:00
Robin
1367ff9914
Merge pull request #340 from robintown/fix-invite-modal
Fix soft crash when opening invite modal in lobby
2022-05-19 10:46:41 -04:00