Commit Graph

589 Commits

Author SHA1 Message Date
Valere aea5815dab Ensure we don't publish to any transport until our own transport is ok 2026-04-10 09:24:34 +02:00
Valere 40dacd523b review: Move the all advertised/active down to the LocalMember
And let the local member use it properly to send membership event and publish media
2026-04-09 15:22:10 +02:00
Valere 08006d640a fix: Ensure to publish on the correct transport 2026-04-08 11:10:27 +02:00
Robin 2c34e681a1 Fix tests 2026-04-06 12:58:26 +02:00
Valere 9fe35ba822 Add back the patch to avoid reconnect glitch 2026-04-03 19:08:52 +02:00
Valere a89d231858 review change comment to proper doc 2026-04-03 18:51:14 +02:00
Valere 6d99450d81 review: Remove un-needed initial value for behavior 2026-04-03 18:46:49 +02:00
Valere b5be123953 fix uncaught errors in tests 2026-04-02 16:53:51 +02:00
Valere 90bfaecd13 refact: step 2 - break down old membership local transport logic 2026-04-02 16:53:51 +02:00
Valere 4cecdda955 refact: step 1 - extract oldest membership transport into new function 2026-04-02 16:53:51 +02:00
Valere 869bab8253 fixup test since usage of doNetworkOperationWithRetry
doNetworkOperationWithRetry requires to properly mock the get_token endpoint, whereas retryNetworkOperation didn't require it.
2026-04-02 16:53:51 +02:00
Valere 23f846a308 fixup: test prettier 2026-04-02 16:53:51 +02:00
Valere 6dcb470162 Refactor local transport
- use the new domain logic to discover the transport
- then try to authenticate
- Also fix the bug in multi sfu where active$ not updated on delayId change
2026-04-02 14:38:49 +02:00
Valere c5c154c99b add self contained domain logic to discover transports 2026-04-02 14:37:25 +02:00
Valere fd08489afb add failing test showing delayId not properly used for delegation 2026-04-02 14:32:26 +02:00
Robin f7488a0474 Avoid redundantly showing the local user in the PiP tile
If you are the only participant in the call, the expanded spotlight layout would redundantly show your media in both the spotlight and PiP tiles. This is a regression; in versions 0.16.1 and earlier we would avoid showing the same user twice.
2026-04-01 13:16:39 +02:00
Valere 8cee4df46e fix test: use fetchMock to avoid test interference 2026-03-31 12:03:02 +02:00
Valere 6b7467ce6d Stop calling rtc/transport in widget mode 2026-03-31 11:38:21 +02:00
Valere fc61a36d4a review: improve comments 2026-03-24 18:25:09 +01:00
Valere 1bc2abb84f rename ControlledAudioOutput to iOSControlledAudioOutput 2026-03-24 18:03:33 +01:00
Valere 4f518819d3 review: extract ControlledAudioOutput in its own file 2026-03-24 18:02:27 +01:00
Valere c8b8d350d5 Merge branch 'livekit' into valere/default_route 2026-03-19 18:41:36 +01:00
Valere c4ec52ae15 add some test for normal AudiOutput 2026-03-19 10:44:38 +01:00
Valere 4be2bc7560 android: Select default output device based on callIntent
Add comments on existing code
Extracted a specific android controller for isolation and better testing

lint fixes

Fix device update logic and more tests

better typescript
2026-03-19 10:44:38 +01:00
Robin 9dfade68ee New ringing UI
This implements the new ringing UI by showing a placeholder tile for the participant being dialed, rather than an overlay.
2026-03-18 11:20:43 +01:00
Timo K 273eedd256 keep pip as it was before on mobile 2026-03-10 13:57:06 +01:00
Timo K 8db1c4c370 Implement new Pip Layout (with control buttons) 2026-03-10 13:57:06 +01:00
Valere ca3837f44e fix merge issue that added back a deprecated test 2026-03-09 15:07:42 +01:00
Valere 5a612fea91 Merge branch 'livekit' into valere/auto_fit_based_on_video_ratio 2026-03-09 14:30:54 +01:00
Valere 513477d280 review: Use targetWidth/Height instead of listening to element bounds 2026-03-09 09:45:25 +01:00
Robin c7a16e9dfd Refactor screen share volume button into a component 2026-03-06 23:14:15 +01:00
Jake Janicke a34fe7817a Add tests for screen share volume controls
Signed-off-by: Jake Janicke <jaketripplj@gmail.com>
2026-03-04 03:52:46 -06:00
Jake Janicke 2cf4a38c17 Add volume logic to RemoteScreenShareViewModel
Signed-off-by: Jake Janicke <jaketripplj@gmail.com>
2026-03-03 16:47:41 -06:00
Valere c199d00300 Merge branch 'livekit' into valere/auto_fit_based_on_video_ratio 2026-03-02 14:31:47 +01:00
Robin 0ce24929dc Add TODO to clean up encryption status code 2026-02-27 17:12:24 +01:00
Robin 9930288d1f Move observeInboundRtpStreamStats$ into the appropriate file 2026-02-27 17:08:04 +01:00
Valere 1de8d93b4b feat: video auto fit based on video stream size 2026-02-26 16:28:37 +01:00
Robin 6b51b7dc58 Split MediaViewModel into multiple files 2026-02-25 22:41:28 +01:00
Robin 6995388a29 Convert media view model classes to interfaces
Timo and I agreed previously that we should ditch the class pattern for view models and instead have them be interfaces which are simply created by functions. They're more straightforward to write, mock, and instantiate this way.

The code for media view models and media items is pretty much the last remaining instance of the class pattern. Since I was about to introduce a new media view model for ringing, I wanted to get this refactor out of the way first rather than add to the technical debt.

This refactor also makes things a little easier for https://github.com/element-hq/element-call/pull/3747 by extracting volume controls into their own module.
2026-02-25 14:47:43 +01:00
Robin bc238778ad Make the type of participant$ stricter
It is, in fact, required to be a behavior.
2026-02-18 14:01:55 +01:00
Robin 9d37125677 Only expose RTC backend identity debug info where we actually use it
We only ever inspect the RTC backend identity of user media tiles. So it only needs to be exposed on the user media view model.
2026-02-18 13:46:18 +01:00
Robin d87c3293c9 Make one-on-one layout media types stricter 2026-02-18 13:44:20 +01:00
Timo ba95780813 Merge pull request #3734 from element-hq/robin/local-transport
Build / build_full_element_call (push) Failing after 2m6s
Build & publish embedded packages for releases / Versioning (push) Successful in 2s
Test / Run unit tests (push) Failing after 3m10s
Upload translation files to Localazy / upload (push) Failing after 22s
Test / Run end-to-end tests (push) Failing after 7m34s
Build & publish embedded packages for releases / build_element_call (push) Failing after 10m39s
Build & publish embedded packages for releases / Publish tarball (push) Failing after 27s
Build / deploy_develop (push) Has been skipped
Build / docker_for_develop (push) Has been skipped
Build & publish embedded packages for releases / Publish NPM (push) Failing after 1m25s
Build & publish embedded packages for releases / Publish Android AAR (push) Failing after 1m3s
Build & publish embedded packages for releases / Update release notes (push) Successful in 1m15s
Build / build_sdk_element_call (push) Failing after 2m35s
Build / build_embedded_element_call (push) Failing after 10m17s
Build & publish embedded packages for releases / Publish SwiftPM Library (push) Failing after 1m30s
Logically separate the advertised transport from the active transport
2026-02-16 15:21:28 +01:00
Robin 4508002947 Test local transport code in oldest member mode 2026-02-13 14:06:44 +01:00
Robin 2a56830426 Fix existing LocalTransport tests 2026-02-13 14:06:44 +01:00
Robin 6cf859fd9e Fix resource leak due to unsafe scope reference 2026-02-13 12:40:12 +01:00
Robin 13d131c2e9 Logically separate the advertised transport from the active transport
To correctly implement the legacy "oldest membership" mode, we need the code to be more nuanced about the local transport. Specifically, it needs to allow for the transport we advertise in our membership to be different from the transport that we connect to and publish media on. Otherwise, if these two are yoked together, members will resend their memberships whenever an SFU hop occurs, which an attacker could use to cause an amplified wave of state changes.
2026-02-11 13:47:15 +01:00
Valere 1e9f2e6282 fix: Simplify log causing stringify TypeError on widget mode 2026-02-10 17:24:01 +01:00
Timo a329ae0ad1 Merge pull request #3720 from element-hq/toger5/sdk-improvements-only
[MatrixRTC SDK] improvements - compatible with custom rtc application
2026-02-09 09:50:16 +01:00
Robin a0209eb433 Add debug logs to generateItems
It's always worth having logs for when state holders are created or destroyed (these are often the most interesting things happening in the application), so I thought it would be nice to have generateItems always log for you when it's doing that.
2026-02-06 13:26:02 +01:00