Commit Graph

46 Commits

Author SHA1 Message Date
Robin
f967bd1f4e Remove unused mocks 2024-02-15 22:33:17 -05:00
Angel Mendez Cano
9a5afb11f6 feat: update tests using vitest
- replace jest references with vitest
2024-02-02 19:00:38 -06:00
Robin
35acd83df8 Update Compound Web 2024-01-05 13:51:39 -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
42c8677be1 Fix jumpy speaker tiles in spotlight mode
reorderTiles was programmed to only place a tile in the speaker section if that tile's previous position was off-screen. But for speakers that started off-screen, this would cause them to oscillate in and out of the speaker section on each render, because the speaker section is, of course, on-screen. The solution I've gone with here is to avoid referencing the previous position, and instead go by the computed natural ordering, which ought to be more stable.
2023-11-20 01:02:08 -05:00
Robin
614bc82402 Format code 2023-10-11 10:42:04 -04:00
Robin
7df093a23c Merge branch 'livekit' into invite-modal 2023-09-28 09:42:06 -04:00
Robin
2730cea181 Fix imports 2023-09-27 19:06:10 -04:00
Robin
8a14d60cb4 Implement the new invite modal designs 2023-09-27 17:45:18 -04:00
David Baker
4f48751aa2 Small refactor of URLParams stuff
Splits out the room locartion parsing from everything else to avoid
one function that fills out different parts of its return struct
depending on its args.
2023-09-18 17:49:10 +01:00
Robin Townsend
0bf96472eb Work around jsdom not providing TextEncoder 2023-09-01 13:23:24 -04:00
Šimon Brandner
923043a58c
Fix tests
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-08-09 14:08:23 +02:00
Šimon Brandner
ff00859343
Fix tests
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-29 20:46:45 +02:00
Šimon Brandner
723819b3d6
Merge remote-tracking branch 'upstream/livekit' into SimonBrandner/feat/friendly-url
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-15 09:48:08 +02:00
Daniel Abramov
6d6e88c234 Fix unit tests after the lints 2023-07-11 16:02:58 +01:00
Daniel Abramov
0105162ffa Enable strict lints
An attempt to fix https://github.com/vector-im/element-call/issues/1132
2023-07-11 16:02:58 +01:00
Robin Townsend
3ac98c8865 Make the expand and collapse interactions inverses of one another
For the most part, at least. If the edge cases where they differ still feel weird, I can iterate on this further.

The diff is unfortunately a bit impenetrable, because I had to change both the fillGaps and cycleTileSize core algorithms used by the big grid layout. But: the main change of significance is the addition of a function vacateArea, which clears out an area within the grid in a specific way that mirrors the motion performed by fillGaps.
2023-07-06 00:59:14 -04:00
Šimon Brandner
8fbcc06cd8
Don't use the whole Location
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-03 20:05:08 +02:00
Šimon Brandner
b08044c06d
More fixes of id vs alias
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-03 19:30:38 +02:00
Šimon Brandner
e1ef18093f
Fix alias vs id + participants bug
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-03 19:23:26 +02:00
Šimon Brandner
11785fc243
Avoid redirects
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2023-07-03 15:40:06 +02:00
Robin Townsend
9704033dc8 Fix tests 2023-06-30 18:46:10 -04:00
Robin Townsend
17450b4531 Fix big grid crashing due to missing React import
by fixing the cause rather than the symptom: this upgrades the code to use the new, recommended JSX transform mode of React 17+, which no longer requires you to import React manually just to write JSX.
2023-06-30 18:21:18 -04:00
Robin Townsend
cc35f243f2 Make NewVideoGrid support arbitrary layout systems
In preparation for adding layouts other than big grid to the NewVideoGrid component, I've abstracted the grid layout system into an interface called Layout. For now, the only implementation of this interface is BigGrid, but this will allow us to easily plug in Spotlight, SplitGrid, and OneOnOne layout systems so we can get rid of the old VideoGrid component and have One Grid to Rule Them All™.

Please do shout if any of this seems obtuse or underdocumented, because I'm not super happy with how approachable the NewVideoGrid code looks right now…

Incidentally, this refactoring made it way easier to save the state of the grid while in fullscreen / another layout, so I went ahead and did that.
2023-06-27 14:20:45 -04:00
Robin Townsend
c3c26e235b Merge branch 'grid-interactions' into livekit-experiment 2023-06-18 01:13:45 -04:00
Robin Townsend
4e5a75074a Fix tiles not collapsing toward their center 2023-06-18 01:01:24 -04:00
Robin Townsend
391ba5196c Make screenshares appear near the presenter's tile and be larger 2023-06-18 00:47:37 -04:00
Robin Townsend
d1e7d963a3 Merge branch 'grid-interactions' into livekit-experiment 2023-06-17 22:32:19 -04:00
Robin Townsend
afbcea7b66 Allow the grid to resize with the window width 2023-06-17 22:31:07 -04:00
Robin Townsend
4f582c6ad7 Don't change tile size when dragging 2023-06-17 22:31:07 -04:00
Robin Townsend
8b8d6fd0e0 Push large tiles upwards back into the grid 2023-06-17 22:31:01 -04:00
Robin Townsend
ab97f12947 Merge branch 'main' into livekit-experiment 2023-06-09 17:22:34 -04:00
Enrico Schwendig
f0a6f5919e
move webrtc etc. events from groupCall to matrix.call span (#1080)
* add new linked span for connection stats

* move stats span under call span and add user attribute

* Update matrix-js-sdk
2023-06-06 08:28:53 +02:00
Robin Townsend
207554f067 Fix tests 2023-05-14 01:32:11 -04:00
Robin Townsend
7d454645d0 Fix types 2023-05-13 14:27:01 -04:00
Robin Townsend
838137c83b Detect split-brains caused by parallel calls
This is another KPI for PostHog.
2023-04-17 16:58:51 -04:00
Enrico Schwendig
370a6579fb
Add jitter in webrtc stats (#1000)
* stats: add jitter in webrtc stats
2023-04-14 08:49:33 +02:00
Enrico Schwendig
390442a4c3
Add webrtc metric to OTel (#974)
* stats: Add summery report

---------

Co-authored-by: David Baker <dave@matrix.org>
2023-04-05 10:25:26 +02:00
Robin Townsend
8c818b9ce1 Get 100% test coverage on grid operations 2023-02-13 22:24:04 -05:00
Robin Townsend
8d0bf4cacc Test grid operations 2023-02-13 18:35:50 -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
90ef5505bb Apply Prettier to the entire project
This ensures that our tests will be formatted by Prettier, among other things.
2022-12-09 14:34:25 -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
Robin Townsend
d4caa1585b Ensure that Olm is only loaded once
React 18's strict mode intentionally mounts all components twice, which was causing Olm to get double-loaded. Also, it doesn't need to be loaded if the app is running as a widget.
2022-10-31 13:43:03 -04:00
Šimon Brandner
88f4b889a1
Add CallList test
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-26 13:21:12 +02:00
Šimon Brandner
fcaa126147
Add jest
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-10-26 13:21:06 +02:00