Commit Graph
822 Commits
Author SHA1 Message Date
Timo afee9eaa26 Don't update mute when reaching the user count threshold. (#2474)
* Dont update mute during call.
2024-07-18 18:14:29 +02:00
Robin 364b78abda Delete the unused full screen code
We no longer allow individual tiles to be put in full screen, because we're seeing what it's like to just stretch the spotlight tile edge-to-edge and keep the margins minimal.
2024-07-18 11:48:06 -04:00
Robin 507b1fc52d Merge branch 'livekit' into new-call-layouts 2024-07-18 11:38:35 -04:00
Robin 4955535374 Use more consistent names for layout types 2024-07-18 11:24:18 -04:00
renovate[bot]andTimo e79cded57f Update all non-major dependencies (#2479)
* Update all non-major dependencies

* prettier fixes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Timo <toger5@hotmail.de>
2024-07-17 10:07:26 +02:00
Robin 2440037639 Implement most of the remaining layout changes
Includes the mobile UX optimizations and the tweaks we've made to cut down on wasted space, but does not yet include the change to embed the spotlight tile within the grid.
2024-07-12 15:50:17 -04:00
Robin 45c89a2298 Delete the legacy grid system 2024-07-12 15:49:43 -04:00
Robin 7979493371 Implement the new one-on-one layout 2024-07-12 15:47:56 -04:00
Robin e0b10d89b5 Add model for one-on-one layout 2024-07-12 15:47:56 -04:00
Robin ec1b020d4e Add indicators to spotlight tile and make spotlight layout responsive 2024-07-12 15:47:00 -04:00
Robin ffbbc74a96 Implement the new spotlight layout 2024-07-12 15:47:00 -04:00
Robin af0bd795b5 Replace react-rxjs with observable-hooks
react-rxjs is the library we've been using to connect our React components to view models and consume observables. However, after spending some time with react-rxjs, I feel that it's a very heavy-handed solution. It requires us to sprinkle <Subscribe /> and <RemoveSubscribe /> components all throughout the code, and makes React go through an extra render cycle whenever we mount a component that binds to a view model. What I really want is a lightweight React hook that just gets the current value out of a plain observable, without any extra setup. Luckily the observable-hooks library with its useObservableEagerState hook seems to do just that—and it's more actively maintained, too!
2024-07-12 15:46:33 -04:00
Robin e33fbd77d1 Split local and remote user media into different classes 2024-07-12 15:43:24 -04:00
Robin a534356dd9 Merge pull request #2368 from robintown/settings-refactor
Refactor settings to use observables
2024-07-12 14:50:46 -04:00
Robin 14fc1481f3 Address some review feedback 2024-07-12 14:01:32 -04:00
Robin 41083c0f9e Refactor settings to use observables
Also removing some unused settings along the way.
2024-07-03 15:29:32 -04:00
Robin 20602c122b Implement the new unified grid layout
Here I've implemented an MVP for the new unified grid layout, which scales smoothly up to arbitrarily many participants. It doesn't yet have a special 1:1 layout, so in spotlight mode and 1:1s, we will still fall back to the legacy grid systems.

Things that happened along the way:
- The part of VideoTile that is common to both spotlight and grid tiles, I refactored into MediaView
- VideoTile renamed to GridTile
- Added SpotlightTile for the new, glassy spotlight designs
- NewVideoGrid renamed to Grid, and refactored to be even more generic
- I extracted the media name logic into a custom React hook
- Deleted the BigGrid experiment
2024-07-03 15:29:08 -04:00
TimoandRobin d27f433175 Skip error screen for the issue, that the homeserver does not support the room summary endpoint. (#2453)
* Add try inner try block to the room summary fetching and only throw after fetching and a "blind join" fails.
(blind join: call room.join without knowing if the room is public)

Co-authored-by: Robin <robin@robin.town>

---------

Co-authored-by: Robin <robin@robin.town>
2024-06-25 08:44:02 +00:00
TimoandAndrew Ferrazzutti 812ae2ce89 Load focus information from well known and use client config only as a fallback. (#2358)
* Load focus information from well known and use client config only as a fallback.

Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
2024-06-19 16:41:52 +02:00
Robin bd7209cd40 Merge pull request #2250 from element-hq/renovate/typescript-eslint-monorepo
Update typescript-eslint monorepo to v7.12.0
2024-06-04 11:21:59 -04:00
Robin 70fdc68b13 Fix lints 2024-06-04 11:20:25 -04:00
Robin 0aeb68b445 Reduce footer space while preserving visual balance 2024-06-04 10:05:21 -04:00
Marcel Ackermann 6b6ad16306 remove excessive footer space 2024-06-01 13:10:15 +02:00
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
TimoandRobin 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
TimoandAndrew Ferrazzutti 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
TimoandRobin 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