Commit Graph

649 Commits

Author SHA1 Message Date
Andrew Ferrazzutti
8718a7139b Don't auto-join knock room on invite after leave (#2362)
If you send a knock that is rejected, or your knock is accepted and you
are later removed from the room, do not automatically accept subsequent
invites to that room.

Note that the auto-join behaviour happened only if the page was not
refreshed after sending a knock.
2024-05-07 16:58:30 +09:00
Andrew Ferrazzutti
56312b2753 Join knock rooms on page load if already invited (#2355)
When visiting the page for a knock room you are already invited to, join
it right away instead of offering to knock (which will fail as long as
you remain invited to the room).
2024-05-04 01:37:58 +09:00
Timo
3670c36fac Fix audio/video device flickering (#2353)
* Make onError a `useCallback`

Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Robin <robin@robin.town>
2024-05-02 17:28:36 +02:00
Timo
51926cad3d Revert "Fix mute flickering. (#2350)" (#2351)
This reverts commit 2ab909fab1.
2024-04-30 20:08:39 +02:00
Timo
2ab909fab1 Fix mute flickering. (#2350)
Use `useMeme` to not change the parameters that are used to call usePreviewDevice.

Signed-off-by: Timo K <toger5@hotmail.de>
2024-04-30 19:57:36 +02:00
Timo
5284479ece Knocking support (#2281)
* Add joining with knock room creation flow.

Also add `WaitForInviteView` after knocking.
And appropriate error views when knock failed or gets rejected.

Signed-off-by: Timo K <toger5@hotmail.de>

* Refactor encryption information.

We had lots of enums and booleans to describe the encryption situation.
Now we only use the `EncryptionSystem` "enum" which contains the
additional information like sharedKey. (and we don't use the isRoomE2EE
function that is somewhat confusing since it checks `return widget ===
null && !room.getCanonicalAlias();` which is only indirectly related to
e2ee)

Signed-off-by: Timo K <toger5@hotmail.de>

* Update recent list.

- Don't use deprecated `groupCallEventHander` anymore (it used the old
  `m.call` state event.)
- make the recent list reactive (getting removed from a call removes the
  item from the list)
- support having rooms without shared secret but actual matrix
  encryption in the recent list
- change the share link creation button so that we create a link with
  pwd for sharedKey rooms and with `perParticipantE2EE=true` for matrix
  encrypted rooms.

Signed-off-by: Timo K <toger5@hotmail.de>

* fix types

Signed-off-by: Timo K <toger5@hotmail.de>

* patch js-sdk for linter

Signed-off-by: Timo K <toger5@hotmail.de>

* ignore ts expect error

Signed-off-by: Timo K <toger5@hotmail.de>

* Fix error in widget mode.

We cannot call client.getRoomSummary in widget mode. The code path needs
to throw before reaching this call. (In general we should never call
getRoomSummary if getRoom returns a room)

Signed-off-by: Timo K <toger5@hotmail.de>

* tempDemo

Signed-off-by: Timo K <toger5@hotmail.de>

* remove wait for invite view

Signed-off-by: Timo K <toger5@hotmail.de>

* yarn i18n

Signed-off-by: Timo K <toger5@hotmail.de>

* reset back mute participant count

* add logic to show error view when getting removed

* include reason whenever someone gets removed from a call.

* fix activeRoom not beeing early enough

* fix lints

* add comment about encryption situation

Signed-off-by: Timo K <toger5@hotmail.de>

* Fix lockfile

* Use (unmerged!) RoomSummary type from the js-sdk

Temporarily change the js-sdk dependency to the PR branch that provides
that type

* review

Signed-off-by: Timo K <toger5@hotmail.de>

* review (remove participant count unknown)

Signed-off-by: Timo K <toger5@hotmail.de>

* remove error for unencrypted calls (allow intentional unencrypted calls)

Signed-off-by: Timo K <toger5@hotmail.de>

* update js-sdk

Signed-off-by: Timo K <toger5@hotmail.de>

---------

Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
2024-04-23 22:15:13 +09:00
Timo
6539c15177 Dont send register request in widget mode (#2100)
* dont register in widget mode

Signed-off-by: Timo K <toger5@hotmail.de>

* not call registerPasswordlessUser where its called in a widget.

Signed-off-by: Timo K <toger5@hotmail.de>

---------

Signed-off-by: Timo K <toger5@hotmail.de>
2024-02-21 21:07:44 +01:00
Timo
21e3c606bf Improve focus switch logging (#2153)
Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Robin <robin@robin.town>
2024-02-21 15:42:52 +01:00
Timo
c4075f736f Federated room joins (#2188) 2024-02-21 15:41:59 +01:00
Timo
bb570b953b Fix: When clicking the "join call now" button twice two guests are registered. (#2173)
Signed-off-by: Timo K <toger5@hotmail.de>
2024-02-13 16:36:09 +01:00
Robin
2891ce0857 Merge pull request #2138 from robintown/disable-pip
Remove the disablePictureInPicture Firefox hack
2024-02-02 09:40:03 -05:00
Robin
9669b71440 Update icon imports 2024-02-01 14:19:35 -05:00
Robin
0824963811 Remove the disablePictureInPicture Firefox hack
https://bugzilla.mozilla.org/show_bug.cgi?id=1865748 is fixed in Firefox 122.0, so we can now use the attribute the normal way.
2024-02-01 14:06:53 -05:00
Timo
35a79364a9 Widget return to lobby (#2099)
* Return to lobby after call ended in widget mode

* Wait for making the widget sticky until connected

Signed-off-by: Timo K <toger5@hotmail.de>
2024-01-26 10:03:08 +01:00
Robin
2865a6c77e Revert an addition of contain: strict
I thought that adding isolation: isolate to the React root had fixed the Firefox layering glitches, but today I've started noticing those glitches again.
2024-01-10 11:04:36 -05:00
Robin
d4780b2d63 Use the new isTriggerInteractive tooltip prop 2024-01-10 10:46:13 -05:00
Robin
b2bc8edcc1 Refactor/redesign video tiles 2023-12-18 16:59:48 -05:00
Robin
169ccd9de5 Start refactoring some business logic into view models
As Element Call grows in complexity, it has become a pain point that our business logic remains so tightly coupled to the UI code. In particular, this has made testing difficult, and the complex semantics of React hooks are not a great match for arbitrary business logic. Here, I show the beginnings of what it would look like for us to adopt the MVVM pattern. I've created a CallViewModel and TileViewModel that expose their state to the UI as rxjs Observables, as well as a couple of helper functions for consuming view models in React code.

This should contain no user-visible changes, but we need to watch out for regressions particularly around focus switching and promotion of speakers, because this was the logic I chose to refactor first.
2023-12-01 17:09:21 -05:00
Robin
a2e932b73f Fix a couple of visual glitches on Firefox 2023-12-01 12:37:46 -05:00
Robin
c433069f90 Format code 2023-11-30 23:40:33 -05:00
Robin
e017468f4d Fix the invite modal overflowing
If the URL was the wrong shape, it could cause the modal to overflow, so it needs an extra nudge to line break in the right places.
2023-11-29 11:27:44 -05:00
Timo
db859d43e9 Refactor livekit disconnect to use an effect hook. (#1925)
---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-11-28 19:07:08 +01:00
Timo
005b0bfa5e Fix not disconnecting from livekit session. (#1920)
Signed-off-by: Timo K <toger5@hotmail.de>
2023-11-24 17:53:15 +01:00
Robin
115dfea521 Show unencrypted media warnings in widget mode (#1915)
They weren't showing up because the video tiles didn't think that the call was encrypted in the per-participant keys case.
2023-11-23 17:50:55 +01:00
Michael Telatynski
7051c11411 I18n'ise hardcoded strings 2023-11-22 20:07:30 +00:00
Robin
de3a3b6c22 Merge pull request #1913 from robintown/disable-pip
Properly disable picture-in-picture controls
2023-11-21 12:53:47 -05:00
Robin
0c2a410033 Merge pull request #1911 from robintown/lock-accessibility
Make the encryption lock more accessible
2023-11-21 12:53:37 -05:00
fkwp
59387e5b96 Merge pull request #1912 from robintown/unencrypted-indicator
Show a warning on unencrypted media
2023-11-21 16:22:12 +01:00
David Baker
0ba550f56b Merge pull request #1910 from vector-im/dbkr/fix_no_media_perms
Fix joining calls with no media permission
2023-11-21 09:18:00 +00:00
Robin
6ebef28ad8 Properly disable picture-in-picture controls
There were some outdated comments regarding Firefox's support of the disablePictureInPicture flag which I decided to clean up.
2023-11-20 20:42:27 -05:00
Robin
49a50514fd Show a warning on unencrypted media 2023-11-20 19:04:53 -05:00
Robin
09481d1e44 Give the lock icon an accessible label 2023-11-20 19:02:19 -05:00
Robin
fcfb818a27 Make the encryption lock tooltip accessible via the keyboard 2023-11-20 18:59:56 -05:00
Robin
aa8ef57ee0 Merge pull request #1908 from vector-im/t3chguy/localazy/2
Switch from Weblate to Localazy
2023-11-20 16:55:58 -05:00
David Baker
861d8ec016 Fix joining calls with no media permission
You can still try to unmute your media in the preview screen and
the button will show unmuted, but then mute again once you actually
join, so not 100% perfect but better.

Fixes https://github.com/vector-im/element-call/issues/1907
Fixes https://github.com/vector-im/element-call/issues/1661
2023-11-20 18:49:08 +00:00
Robin
0144aafee5 Count people as speakers even if there is a presenter 2023-11-20 13:33:45 -05:00
Michael Telatynski
d5f546a093 prettier the world 2023-11-20 13:38:01 +00:00
Michael Telatynski
cdbf4cac01 ```
move "{{count, number}}_one" "participant_count_one"
move "{{count, number}}_other" "participant_count_other"
move "{{count}} stars_one" "star_rating_input_label_one"
move "{{count}} stars_other" "star_rating_input_label_other"
move "{{displayName}} is presenting" "video_tile.presenter_label"
move "{{displayName}}, your call has ended." "call_ended_view.headline"
move "<0></0><1></1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call." "settings.opt_in_description"
move "<0>Already have an account?</0><1><0>Log in</0> Or <2>Access as a guest</2></1>" "register_auth_links"
move "<0>Create an account</0> Or <2>Access as a guest</2>" "login_auth_links"
move "<0>Oops, something's gone wrong.</0>" "full_screen_view_h1"
move "<0>Submitting debug logs will help us track down the problem.</0>" "full_screen_view_description"
move "<0>Thanks for your feedback!</0>" "call_ended_view.feedback_done"
move "<0>We'd love to hear your feedback so we can improve your experience.</0>" "call_ended_view.feedback_prompt"
move "<0>Why not finish by setting up a password to keep your account?</0><1>You'll be able to keep your name and set an avatar for use on future calls</1>" "call_ended_view.create_account_prompt"
move "Another user on this call is having an issue. In order to better diagnose these issues we'd like to collect a debug log." "rageshake_request_modal.body"
move "Back to recents" "lobby.leave_button"
move "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy</2> and our <5>Cookie Policy</5>." "analytics_notice"
move "Call not found" "group_call_loader_failed_heading"
move "Calls are now end-to-end encrypted and need to be created from the home page. This helps make sure everyone's using the same encryption key." "group_call_loader_failed_text"
move "Confirm password" "register_confirm_password_label"
move "Connectivity to the server has been lost." "disconnected_banner"
move "Continue in browser" "app_selection_modal.continue_in_browser"
move "Create account" "call_ended_view.create_account_button"
move "Debug log request" "rageshake_request_modal.title"
move "Developer" "settings.developer_tab_title"
move "Developer Settings" "settings.developer_settings_label"
move "Element Call Home" "header_label"
move "End call" "hangup_button_label"
move "Full screen" "fullscreen_button_label"
move "Exit full screen" "exit_fullscreen_button_label"
move "Expose developer settings in the settings window." "settings.developer_settings_label_description"
move "Feedback" "settings.feedback_tab_title"
move "Grid" "layout_grid_label"
move "Spotlight" "layout_spotlight_label"
move "How did it go?" "call_ended_view.survey_prompt"
move "If you are experiencing issues or simply would like to provide some feedback, please send us a short description below." "settings.feedback_tab_body"
move "Include debug logs" "settings.feedback_tab_send_logs_label"
move "Invite to this call" "invite_modal.title"
move "Join call" "lobby.join_button"
move "Join call now" "room_auth_view_join_button"
move "Join existing call?" "join_existing_call_modal.title"
move "Link copied to clipboard" "invite_modal.link_copied_toast"
move "Local volume" "local_volume_label"
move "Logging in…" "logging_in"
move "Login" "login_title"
move "Login to your account" "unauthenticated_view_login_button"
move "Microphone off" "microphone_off"
move "Microphone on" "microphone_on"
move "More" "settings.more_tab_title"
move "Mute microphone" "mute_microphone_button_label"
move "Name of call" "call_name"
move "Not now, return to home screen" "call_ended_view.not_now_button"
move "Open in the app" "app_selection_modal.open_in_app"
move "Not registered yet? <2>Create an account</2>" "unauthenticated_view_body"
move "Participants" "header_participants_label"
move "Passwords must match" "register.passwords_must_match"
move "Ready to join?" "app_selection_modal.text"
move "Recaptcha dismissed" "recaptcha_dismissed"
move "Recaptcha not loaded" "recaptcha_not_loaded"
move "Reconnect" "call_ended_view.reconnect_button"
move "Registering…" "register.registering"
move "Retry sending logs" "rageshake_button_error_caption"
move "Return to home screen" "return_home_button"
move "Select an option" "select_input_unset_button"
move "Select app" "app_selection_modal.title"
move "Send debug logs" "rageshake_send_logs"
move "Sending debug logs…" "rageshake_sending_logs"
move "Sending…" "rageshake_sending"
move "Share screen" "screenshare_button_label"
move "Sharing screen" "stop_screenshare_button_label"
move "Show connection stats" "settings.show_connection_stats_label"
move "Speaker" "settings.speaker_device_selection_label"
move "Start new call" "start_new_call"
move "Start video" "start_video_button_label"
move "Stop video" "stop_video_button_label"
move "Submit feedback" "settings.feedback_tab_h4"
move "Submitting…" "submitting"
move "Thanks, we received your feedback!" "settings.feedback_tab_thank_you"
move "Thanks!" "rageshake_sent"
move "This application has been opened in another tab." "application_opened_another_tab"
move "This call already exists, would you like to join?" "join_existing_call_modal.text"
move "Unmute microphone" "unmute_microphone_button_label"
move "Version: {{version}}" "version"
move "Waiting for other participants…" "waiting_for_participants"
move "Yes, join call" "join_existing_call_modal.join_button"
move "You" "video_tile.sfu_participant_local"
move "You were disconnected from the call" "call_ended_view.body"
move "Your feedback" "settings.feedback_tab_description_label"
move "Your web browser does not support media end-to-end encryption. Supported Browsers are Chrome, Safari, Firefox >=117" "browser_media_e2ee_unsupported"
move "By clicking \"Go\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "unauthenticated_view_eula_caption"
move "By clicking \"Join call now\", you agree to our <2>End User Licensing Agreement (EULA)</2>" "room_auth_view_eula_caption"
move "This site is protected by ReCAPTCHA and the Google <2>Privacy Policy</2> and <6>Terms of Service</6> apply.<9></9>By clicking \"Register\", you agree to our <12>End User Licensing Agreement (EULA)</12>" "register.recaptcha_caption"
```
2023-11-20 13:20:19 +00:00
Michael Telatynski
71664f5f8e Migrate action, common, a11y translation keys
```
move () {
  FROM=$1 TO=$2 find public/locales -type f -exec sh -c 'jq ".$TO = .\"$FROM\" | del(.\"$FROM\") | del(..|nulls) | select(length > 0)" {} | sponge {}' \;
}

move "Avatar" "common.avatar"
move "Camera" "common.camera"
move "Close" "action.close"
move "Copied!" "common.copied"
move "Copy" "action.copy"
move "Copy link" "action.copy_link"
move "Encrypted" "common.encrypted"
move "Go" "action.go"
move "Home" "common.home"
move "Invite" "action.invite"
move "Loading…" "common.loading"
move "Microphone" "common.microphone"
move "No" "action.no"
move "Not encrypted" "common.unencrypted"
move "Password" "common.password"
move "Profile" "common.profile"
move "Username" "common.username"
move "Video" "common.video"
move "Register" "action.register"
move "Remove" "action.remove"
move "Settings" "common.settings"
move "Sign in" "action.sign_in"
move "Sign out" "action.sign_out"
move "Submit" "action.submit"
move "User menu" "a11y.user_menu"
move "Audio" "common.audio"
move "Display name" "common.display_name"
```
2023-11-20 12:18:43 +00:00
David Baker
be5cd619bb Add comment 2023-11-15 16:20:28 +00:00
David Baker
c146e83c15 Keep screenshares when switching focus
This also removes the use of the useLivekitRoom hook: we had reached
the point where the only thing it was actually doing was disconnecting,
so we now do that in the onClick handler for the leave button (I don't
think we need to disconnect on unmount?). It was otherwise just getting in
the way and causing tracks to be enabled/disabled when we didn't want them
to be. This also removes the need for the blockAudio code.

Fixes https://github.com/vector-im/element-call/issues/1413
2023-11-10 15:24:43 +00:00
David Baker
5ab6d18712 Make E2EEConfig required
Previously it could be either undefined or type None which meant the
same thing: no need to have both, just make it required.

This also means we can move the line to set e2ee enabled into a more
sensible place rather than in the ActiveCall de-nulling wrapper.
2023-11-10 11:54:59 +00:00
David Baker
731f1e4008 Merge pull request #1772 from vector-im/dbkr/ppe2ee
Support key-per-participant e2ee
2023-10-31 20:08:05 +00:00
Timo
5008c33dfa missing showControls condition (#1854)
Signed-off-by: Timo K <toger5@hotmail.de>
2023-10-31 16:04:22 +01:00
Timo
70f32feb5f invert show/hide controls (#1850)
Signed-off-by: Timo K <toger5@hotmail.de>
2023-10-31 13:47:24 +01:00
David Baker
49c90a4612 Amalgamate E2EEMode & E2eeType 2023-10-30 17:06:59 +00:00
Timo
441ad5bf2c Fix not hanging up when using the close button (EXA EXI) (#1840)
---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-10-30 17:30:30 +01:00
Robin
adbe8042a2 Fix the build 2023-10-30 11:42:39 -04:00
David Baker
70c042aeee Merge remote-tracking branch 'origin/livekit' into dbkr/ppe2ee 2023-10-27 20:48:51 +01:00
Timo
58ee31d383 Add hideControls url param for screen recordings. (#1808)
---------

Signed-off-by: Timo K <toger5@hotmail.de>
2023-10-26 19:33:59 +02:00