diff --git a/README.md b/README.md
index 546e491a1..ecbabcf2c 100644
--- a/README.md
+++ b/README.md
@@ -115,30 +115,33 @@ For more details on the packages, see the
For operating and deploying Element Call on your own server, refer to the
[**Self-Hosting Guide**](./docs/self_hosting.md).
-## đź§ MatrixRTC Backend Discovery and Selection
+## MatrixRTC Transports
-For proper Element Call operation each site deployment needs a MatrixRTC backend
-setup as outlined in the [Self-Hosting Guide](./docs/self_hosting.md). A typical
-federated site deployment for three different sites A, B and C is depicted below.
+For proper operation of Element Call, each deployment needs to set up a
+MatrixRTC transport in the form of a LiveKit server as outlined in the
+[Self-Hosting Guide](./docs/self_hosting.md). A typical federated site
+deployment for three different sites A, B and C is depicted below.
-### Backend Discovery
+### Transport Discovery
-The MatrixRTC backend (according to
-[MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143)) is
-announced by the Matrix site's `.well-known/matrix/client` file and discovered
-via the `org.matrix.msc4143.rtc_foci` key, e.g.:
+Element Call discovers the available MatrixRTC transports (as defined by
+[MSC4519](https://github.com/matrix-org/matrix-spec-proposals/pull/4519)) by
+hitting the `GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports`
+endpoint of the Client-Server API. An example response:
```json
-"org.matrix.msc4143.rtc_foci": [
+{
+ "rtc_transports": [
{
- "type": "livekit",
- "livekit_service_url": "https://matrix-rtc.example.com/livekit/jwt"
- },
-]
+ "type": "livekit",
+ "livekit_service_url": "https://matrix-rtc.example.com/livekit/jwt"
+ }
+ ]
+}
```
where the format for MatrixRTC using LiveKit backend is defined in
@@ -149,7 +152,7 @@ via `livekit_service_url`.
### Backend Selection
-- Each call participant proposes their discovered MatrixRTC backend from
+- Each call participant proposes their discovered MatrixRTC transport from
`org.matrix.msc4143.rtc_foci` in their `org.matrix.msc3401.call.member` state event.
- For the **LiveKit** MatrixRTC backend
([MSC4195](https://github.com/hughns/matrix-spec-proposals/blob/hughns/matrixrtc-livekit/proposals/4195-matrixrtc-livekit.md)),
@@ -244,10 +247,9 @@ pnpm backend
> [!NOTE]
> To ensure your local development frontend functions properly, you’ll need to
-> add certificate exceptions in your browser for `https://localhost:3000`,
-> `https://matrix-rtc.m.localhost/livekit/jwt/healthz` and
-> `https://synapse.m.localhost/.well-known/matrix/client`. This can be either
-> done by adding the minimum localhost CA
+> add certificate exceptions in your browser for `https://localhost:3000` and
+> `https://matrix-rtc.m.localhost/livekit/jwt/healthz`. This can be done either
+> by adding the minimum localhost CA
> ([./backend/dev_tls_local-ca.crt](./backend/dev_tls_local-ca.crt)) to your web
> browser's trusted certificates or by simply copying and pasting each URL into
> your browser’s address bar and follow the prompts to add the exception.
diff --git a/backend/dev_homeserver-othersite.yaml b/backend/dev_homeserver-othersite.yaml
index 7eb8f294a..8b7bc2272 100644
--- a/backend/dev_homeserver-othersite.yaml
+++ b/backend/dev_homeserver-othersite.yaml
@@ -54,7 +54,6 @@ enable_registration_without_verification: true
registration_shared_secret: "test_shared_secret_for_local_dev_only"
report_stats: false
-serve_server_wellknown: true
# Ratelimiting settings for client actions (registration, login, messaging).
#
diff --git a/backend/dev_homeserver.yaml b/backend/dev_homeserver.yaml
index 0aea2ece2..2204c3cdb 100644
--- a/backend/dev_homeserver.yaml
+++ b/backend/dev_homeserver.yaml
@@ -54,7 +54,6 @@ enable_registration_without_verification: true
registration_shared_secret: "test_shared_secret_for_local_dev_only"
report_stats: false
-serve_server_wellknown: true
# Ratelimiting settings for client actions (registration, login, messaging).
#
diff --git a/backend/dev_nginx.conf b/backend/dev_nginx.conf
index 6ec0d7010..c227370df 100644
--- a/backend/dev_nginx.conf
+++ b/backend/dev_nginx.conf
@@ -1,4 +1,4 @@
-# Synapse reverse proxy including .well-known/matrix/client
+# Synapse reverse proxy
# domain synapse.m.localhost
server {
listen 80;
@@ -11,18 +11,6 @@ server {
ssl_certificate /root/ssl/cert.pem;
ssl_certificate_key /root/ssl/key.pem;
- # well-known config adding rtc_foci backend
- # Note well-known is currently not effective due to:
- # https://spec.matrix.org/v1.12/client-server-api/#well-known-uri the spec
- # says it must be at https://$server_name/... (implied port 443) Hence, we
- # currently rely for local development environment on deprecated config.json
- # setting for livekit_service_url
- location /.well-known/matrix/client {
- add_header Access-Control-Allow-Origin *;
- return 200 '{"m.homeserver": {"base_url": "https://synapse.m.localhost"}, "org.matrix.msc4143.rtc_foci": [{"type": "livekit", "livekit_service_url": "https://matrix-rtc.m.localhost/livekit/jwt"}]}';
- default_type application/json;
- }
-
# Reverse proxy for Matrix Synapse Homeserver
# This is also required for development environment.
# Reason: the lk-jwt-service uses the federation API for the openid token
@@ -44,7 +32,7 @@ server {
}
-# Synapse reverse proxy including .well-known/matrix/client
+# Synapse reverse proxy
# domain synapse.othersite.m.localhost
server {
listen 80;
@@ -57,18 +45,6 @@ server {
ssl_certificate /root/ssl/cert.pem;
ssl_certificate_key /root/ssl/key.pem;
- # well-known config adding rtc_foci backend
- # Note well-known is currently not effective due to:
- # https://spec.matrix.org/v1.12/client-server-api/#well-known-uri the spec
- # says it must be at https://$server_name/... (implied port 443) Hence, we
- # currently rely for local development environment on deprecated config.json
- # setting for livekit_service_url
- location /.well-known/matrix/client {
- add_header Access-Control-Allow-Origin *;
- return 200 '{"m.homeserver": {"base_url": "https://synapse.othersite.m.localhost"}, "org.matrix.msc4143.rtc_foci": [{"type": "livekit", "livekit_service_url": "https://matrix-rtc.othersite.m.localhost/livekit/jwt"}]}';
- default_type application/json;
- }
-
# Reverse proxy for Matrix Synapse Homeserver
# This is also required for development environment.
# Reason: the lk-jwt-service uses the federation API for the openid token
diff --git a/backend/playwright_homeserver-othersite.yaml b/backend/playwright_homeserver-othersite.yaml
index 86c77b35f..83fdbc2e5 100644
--- a/backend/playwright_homeserver-othersite.yaml
+++ b/backend/playwright_homeserver-othersite.yaml
@@ -54,7 +54,6 @@ enable_registration_without_verification: true
registration_shared_secret: "test_shared_secret_for_local_dev_only"
report_stats: false
-serve_server_wellknown: true
# Ratelimiting settings for client actions (registration, login, messaging).
#
diff --git a/backend/playwright_homeserver.yaml b/backend/playwright_homeserver.yaml
index 8f4375241..c5db1f02d 100644
--- a/backend/playwright_homeserver.yaml
+++ b/backend/playwright_homeserver.yaml
@@ -54,7 +54,6 @@ enable_registration_without_verification: true
registration_shared_secret: "test_shared_secret_for_local_dev_only"
report_stats: false
-serve_server_wellknown: true
# Ratelimiting settings for client actions (registration, login, messaging).
#
diff --git a/docs/self_hosting.md b/docs/self_hosting.md
index 01113fcec..0bdfe6284 100644
--- a/docs/self_hosting.md
+++ b/docs/self_hosting.md
@@ -68,10 +68,10 @@ As a prerequisite for the
make sure that your Synapse server has either a `federation` or `openid`
[listener configured](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#listeners).
-### MatrixRTC Backend
+### LiveKit backend
-In order to **guarantee smooth operation** of Element Call, a MatrixRTC backend is
-required for each site deployment.
+In order to **guarantee smooth operation** of Element Call, a dedicated LiveKit
+backend is required for each site deployment.

@@ -165,7 +165,7 @@ Using Haproxy, you can achieve this by:
use_backend mxrtc_auth_backend if is_mxrtc_auth matrixrtc_domain
# Backend
-## MatrixRTC backend
+## LiveKit backend
backend sfu_backend
server livekit 127.0.0.1:7880
http-request set-path %[path,regsub(^/livekit/sfu/,/)]
@@ -187,57 +187,22 @@ backend mxrtc_auth_backend
```
-#### MatrixRTC backend announcement
+#### MatrixRTC transport announcement
-> [!IMPORTANT]
-> As defined in
-> [MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143),
-> the MatrixRTC backend(s) must be announced to the client via `/_matrix/client/unstable/org.matrix.msc4143/rtc/transports`.
-
-Enable the unstable feature flag `msc4143_enabled`, and update the synapse config file:
+Enable the unstable feature flag `msc4143_enabled`, and update the
+[`matrix_rtc` section](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#matrix_rtc)
+of your Synapse config file:
```yaml
-
matrix_rtc:
- - transports:
- - type: livekit
- livekit_service_url: https://matrix-rtc.example.com/livekit/jwt
+ transports:
+ - type: livekit
+ livekit_service_url: https://matrix-rtc.example.com/livekit/jwt
```
-
-
-**⚠️ Well-known discovery will soon be deprecated, but needed if MSC4143 is not supported on your Homeserver**
-
-your **Matrix site's .well-known/matrix/client`** file (e.g. `example.com/.well-known/matrix/client` matching the site deployment example
-from above). The configuration is a list of Foci configs:
-
-```json
-"org.matrix.msc4143.rtc_foci": [
- {
- "type": "livekit",
- "livekit_service_url": "https://matrix-rtc.example.com/livekit/jwt"
- },
- {
- "type": "livekit",
- "livekit_service_url": "https://matrix-rtc-2.example.com/livekit/jwt"
- }
-]
-```
-
-Make sure this file is served with the correct MIME type (`application/json`).
-Additionally, ensure the appropriate CORS headers are set to allow web clients
-to access it across origins. For more details, refer to the
-[Matrix Client-Server API: 2. Web Browser Clients](https://spec.matrix.org/latest/client-server-api/#web-browser-clients).
-
-```
-Access-Control-Allow-Origin: *
-Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
-Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization
-```
-
-> [!NOTE]
-> Most `org.matrix.msc4143.rtc_foci` configurations will only have one entry in
-> the array.
+The transport you specify will be made available to clients over the
+`/_matrix/client/unstable/org.matrix.msc4143/rtc/transports` endpoint as defined
+in [MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143).
## Building Element Call
@@ -292,7 +257,7 @@ runtime. Documentation and default values for `public/config.json` can be found
in [ConfigOptions.ts](../src/config/ConfigOptions.ts).
> [!CAUTION]
-> Please note configuring MatrixRTC backend via `config.json` of
+> Please note configuring LiveKit backend via `config.json` of
> Element Call is only available for developing and debug purposes. Relying on
> it might break Element Call going forward!
diff --git a/locales/en/app.json b/locales/en/app.json
index 3ff956a6a..87fdebe1a 100644
--- a/locales/en/app.json
+++ b/locales/en/app.json
@@ -61,7 +61,7 @@
"crypto_version": "Crypto version: {{version}}",
"custom_livekit_url": {
"current_url": "Currently set to: ",
- "from_config": "Currently, no overwrite is set. Url from well-known or config is used.",
+ "from_config": "Currently, no overwrite is set. Url from config is used.",
"label": "Custom Livekit-url",
"reset": "Reset overwrite",
"save": "Save",
diff --git a/src/config/ConfigOptions.ts b/src/config/ConfigOptions.ts
index ff0aadc37..e283e28fb 100644
--- a/src/config/ConfigOptions.ts
+++ b/src/config/ConfigOptions.ts
@@ -74,10 +74,7 @@ export interface ConfigOptions {
livekit?: {
// The link to the service that returns a livekit url and token to use it.
// This is a fallback link in case the homeserver in use does not advertise
- // a livekit service url in the client well-known.
- // The well known needs to be formatted like so:
- // {"type":"livekit", "livekit_service_url":"https://livekit.example.com"}
- // and stored under the key: "org.matrix.msc4143.rtc_foci"
+ // a livekit service url over the transports endpoint.
livekit_service_url: string;
};
diff --git a/src/settings/__snapshots__/DeveloperSettingsTab.test.tsx.snap b/src/settings/__snapshots__/DeveloperSettingsTab.test.tsx.snap
index 73ae04ca5..1e9811bac 100644
--- a/src/settings/__snapshots__/DeveloperSettingsTab.test.tsx.snap
+++ b/src/settings/__snapshots__/DeveloperSettingsTab.test.tsx.snap
@@ -251,7 +251,7 @@ exports[`DeveloperSettingsTab > renders and matches snapshot 1`] = `
class="_message_1o4d9_86 _help-message_1o4d9_92"
id="radix-_r_8_"
>
- Currently, no overwrite is set. Url from well-known or config is used.
+ Currently, no overwrite is set. Url from config is used.
diff --git a/src/state/CallViewModel/localMember/LocalMember.test.ts b/src/state/CallViewModel/localMember/LocalMember.test.ts
index 8bca91824..16ffe1493 100644
--- a/src/state/CallViewModel/localMember/LocalMember.test.ts
+++ b/src/state/CallViewModel/localMember/LocalMember.test.ts
@@ -20,7 +20,6 @@ import {
afterAll,
beforeEach,
} from "vitest";
-import { AutoDiscovery } from "matrix-js-sdk/lib/autodiscovery";
import { BehaviorSubject, map, of } from "rxjs";
import { logger } from "matrix-js-sdk/lib/logger";
import { type LocalParticipant, type LocalTrack } from "livekit-client";
@@ -78,34 +77,10 @@ describe("LocalMembership", () => {
livekit_alias: "my-oldest-member-service-alias",
};
- const focusConfigFromWellKnown = {
- type: "livekit",
- livekit_service_url: "http://my-well-known-service-url.com",
- };
- const focusConfigFromWellKnown2 = {
- type: "livekit",
- livekit_service_url: "http://my-well-known-service-url2.com",
- };
- const clientWellKnown = {
- "org.matrix.msc4143.rtc_foci": [
- focusConfigFromWellKnown,
- focusConfigFromWellKnown2,
- ],
- };
-
mockConfig({
livekit: { livekit_service_url: "http://my-default-service-url.com" },
});
- vi.spyOn(AutoDiscovery, "getRawClientConfig").mockImplementation(
- async (domain) => {
- if (domain === "example.org") {
- return Promise.resolve(clientWellKnown);
- }
- return Promise.resolve({});
- },
- );
-
const mockedSession = vi.mocked({
room: {
roomId: "roomId",
@@ -132,7 +107,7 @@ describe("LocalMembership", () => {
ownMemberMock,
{
livekit_alias: "roomId",
- livekit_service_url: "http://my-well-known-service-url.com",
+ livekit_service_url: "http://my-livekit-service-url.com",
type: "livekit",
},
{
@@ -150,7 +125,7 @@ describe("LocalMembership", () => {
[
{
livekit_alias: "roomId",
- livekit_service_url: "http://my-well-known-service-url.com",
+ livekit_service_url: "http://my-livekit-service-url.com",
type: "livekit",
},
],
@@ -161,50 +136,6 @@ describe("LocalMembership", () => {
}),
);
});
-
- it("It should not fail with configuration error if homeserver config has livekit url but not fallback", () => {
- mockConfig({});
- vi.spyOn(AutoDiscovery, "getRawClientConfig").mockResolvedValue({
- "org.matrix.msc4143.rtc_foci": [
- {
- type: "livekit",
- livekit_service_url: "http://my-well-known-service-url.com",
- },
- ],
- });
-
- const mockedSession = vi.mocked({
- room: {
- roomId: "roomId",
- client: {
- getDomain: vi.fn().mockReturnValue("example.org"),
- getOpenIdToken: vi.fn().mockResolvedValue({
- access_token: "ACCCESS_TOKEN",
- token_type: "Bearer",
- matrix_server_name: "localhost",
- expires_in: 10000,
- }),
- },
- },
- memberships: [],
- getFocusInUse: vi.fn(),
- joinRTCSession: vi.fn(),
- }) as unknown as MatrixRTCSession;
-
- enterRTCSession(
- mockedSession,
- ownMemberMock,
- {
- livekit_alias: "roomId",
- livekit_service_url: "http://my-well-known-service-url.com",
- type: "livekit",
- },
- {
- encryptMedia: true,
- matrixRTCMode: MATRIX_RTC_MODE,
- },
- );
- });
});
const defaultCreateLocalMemberValues = {
diff --git a/src/state/CallViewModel/localMember/LocalMember.ts b/src/state/CallViewModel/localMember/LocalMember.ts
index e41901b1f..1088301f3 100644
--- a/src/state/CallViewModel/localMember/LocalMember.ts
+++ b/src/state/CallViewModel/localMember/LocalMember.ts
@@ -108,7 +108,6 @@ export type LocalMemberState =
};
/*
- * - get well known
* - get oldest membership
* - get transport to use
* - get openId + jwt token
diff --git a/src/state/CallViewModel/localMember/LocalTransport.test.ts b/src/state/CallViewModel/localMember/LocalTransport.test.ts
index 31b0389ab..89cb831da 100644
--- a/src/state/CallViewModel/localMember/LocalTransport.test.ts
+++ b/src/state/CallViewModel/localMember/LocalTransport.test.ts
@@ -63,8 +63,7 @@ describe("LocalTransport", () => {
client: {
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () => Promise.resolve([]),
- getAccessToken: vi.fn().mockReturnValue("access_token"),
- getDomain: () => "",
+ getDomain: () => "example.org",
baseUrl: "example.org",
// These won't be called in this error path but satisfy the type
getOpenIdToken: vi.fn(),
@@ -77,9 +76,11 @@ describe("LocalTransport", () => {
await flushPromises();
expect(() => advertised$.value).toThrow(
- new MatrixRTCTransportMissingError(""),
+ new MatrixRTCTransportMissingError("example.org"),
+ );
+ expect(() => active$.value).toThrow(
+ new MatrixRTCTransportMissingError("example.org"),
);
- expect(() => active$.value).toThrow(new MatrixRTCTransportMissingError(""));
});
it("throws FailToGetOpenIdToken when OpenID fetch fails", async () => {
@@ -103,10 +104,8 @@ describe("LocalTransport", () => {
useOldestMember: false,
memberships$: constant(new Epoch([])),
client: {
- baseUrl: "https://lk.example.org",
- // Use empty domain to skip .well-known and use config directly
- getDomain: () => "",
- getAccessToken: vi.fn().mockReturnValue("access_token"),
+ baseUrl: "https://example.org",
+ getDomain: () => "example.org",
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () => Promise.resolve([]),
getOpenIdToken: vi.fn(),
@@ -150,11 +149,10 @@ describe("LocalTransport", () => {
client: {
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () => Promise.resolve([]),
- getDomain: () => "",
+ getDomain: () => "example.org",
getOpenIdToken: vi.fn(),
getDeviceId: vi.fn(),
- baseUrl: "https://lk.example.org",
- getAccessToken: vi.fn().mockReturnValue("access_token"),
+ baseUrl: "https://example.org",
},
ownMembershipIdentity: ownMemberMock,
forceJwtEndpoint: JwtEndpointVersion.Legacy,
@@ -221,13 +219,12 @@ describe("LocalTransport", () => {
useOldestMember: true,
memberships$: scope.behavior(memberships$.pipe(trackEpoch())),
client: {
- getDomain: () => "",
+ getDomain: () => "example.org",
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () => Promise.resolve([]),
- getAccessToken: vi.fn().mockReturnValue("access_token"),
getOpenIdToken: vi.fn(),
getDeviceId: vi.fn(),
- baseUrl: "https://lk.example.org",
+ baseUrl: "https://example.org",
},
ownMembershipIdentity: ownMemberMock,
forceJwtEndpoint: JwtEndpointVersion.Legacy,
@@ -278,14 +275,13 @@ describe("LocalTransport", () => {
useOldestMember: true,
memberships$: scope.behavior(memberships$.pipe(trackEpoch())),
client: {
- getDomain: () => "",
+ getDomain: () => "example.org",
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () =>
Promise.resolve([aliceTransport]),
- getAccessToken: vi.fn().mockReturnValue("access_token"),
getOpenIdToken: vi.fn(),
getDeviceId: vi.fn(),
- baseUrl: "https://lk.example.org",
+ baseUrl: "https://example.org",
},
ownMembershipIdentity: ownMemberMock,
forceJwtEndpoint: JwtEndpointVersion.Legacy,
@@ -330,10 +326,9 @@ describe("LocalTransport", () => {
memberships$: constant(new Epoch([])),
client: {
baseUrl: "https://example.org",
- getDomain: vi.fn().mockReturnValue(""),
+ getDomain: vi.fn().mockReturnValue("example.org"),
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: vi.fn().mockResolvedValue([]),
- getAccessToken: vi.fn().mockReturnValue("access_token"),
getOpenIdToken: vi.fn(),
getDeviceId: vi.fn(),
},
@@ -443,11 +438,10 @@ describe("LocalTransport", () => {
delayId$: constant(null),
memberships$: constant(new Epoch([])),
client: {
- getDomain: () => "",
+ getDomain: () => "example.org",
baseUrl: "https://example.org",
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () => Promise.resolve([]),
- getAccessToken: vi.fn().mockReturnValue("access_token"),
// These won't be called in this error path but satisfy the type
getOpenIdToken: vi.fn(),
getDeviceId: vi.fn(),
@@ -456,10 +450,10 @@ describe("LocalTransport", () => {
await flushPromises();
expect(() => advertised$.value).toThrow(
- new MatrixRTCTransportMissingError(""),
+ new MatrixRTCTransportMissingError("example.org"),
);
expect(() => active$.value).toThrow(
- new MatrixRTCTransportMissingError(""),
+ new MatrixRTCTransportMissingError("example.org"),
);
});
});
@@ -484,11 +478,10 @@ describe("LocalTransport", () => {
delayId$: delayId$,
memberships$: constant(new Epoch([])),
client: {
- getDomain: () => "",
+ getDomain: () => "example.org",
baseUrl: "https://example.org",
// eslint-disable-next-line @typescript-eslint/naming-convention
_unstable_getRTCTransports: async () => Promise.resolve([]),
- getAccessToken: vi.fn().mockReturnValue("access_token"),
// These won't be called in this error path but satisfy the type
getOpenIdToken: vi.fn(),
getDeviceId: vi.fn(),
diff --git a/src/state/CallViewModel/localMember/LocalTransport.ts b/src/state/CallViewModel/localMember/LocalTransport.ts
index 62db5a8e1..1a6dddc1f 100644
--- a/src/state/CallViewModel/localMember/LocalTransport.ts
+++ b/src/state/CallViewModel/localMember/LocalTransport.ts
@@ -56,7 +56,7 @@ interface Props {
memberships$: Behavior>;
client: Pick<
MatrixClient,
- "getDomain" | "baseUrl" | "_unstable_getRTCTransports" | "getAccessToken"
+ "getDomain" | "baseUrl" | "_unstable_getRTCTransports"
> &
OpenIDClientParts;
// Used by the jwt service to create the livekit room and compute the livekit alias.
@@ -307,7 +307,7 @@ async function doOpenIdAndJWTFromUrl(
roomId: string,
client: Pick<
MatrixClient,
- "getDomain" | "baseUrl" | "_unstable_getRTCTransports" | "getAccessToken"
+ "getDomain" | "baseUrl" | "_unstable_getRTCTransports"
> &
OpenIDClientParts,
delayId?: string,
@@ -337,7 +337,7 @@ function observeLocalTransportForOldestMembership(
preferredTransport$: Observable,
client: Pick<
MatrixClient,
- "getDomain" | "baseUrl" | "_unstable_getRTCTransports" | "getAccessToken"
+ "getDomain" | "baseUrl" | "_unstable_getRTCTransports"
> &
OpenIDClientParts,
ownMembershipIdentity: CallMembershipIdentityParts,
diff --git a/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.test.ts b/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.test.ts
index c16219abf..748a16f37 100644
--- a/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.test.ts
+++ b/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.test.ts
@@ -71,7 +71,6 @@ describe("RtcTransportAutoDiscovery", () => {
it.each(VALID_TEST_CASES)(
"prefers backend transport other app config $transports",
async ({ transports }) => {
- // it("prefers backend transport over well-known and app config", async () => {
const client = makeClient();
client._unstable_getRTCTransports.mockResolvedValue(transports);
diff --git a/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts b/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts
index d42e4daa4..1f295649f 100644
--- a/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts
+++ b/src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts
@@ -16,7 +16,7 @@ import { doNetworkOperationWithRetry } from "../../../utils/matrix.ts";
type TransportDiscoveryClient = Pick<
MatrixClient,
- "getDomain" | "_unstable_getRTCTransports" | "getAccessToken"
+ "getDomain" | "_unstable_getRTCTransports"
>;
export interface RtcTransportAutoDiscoveryProps {
diff --git a/src/utils/errors.ts b/src/utils/errors.ts
index 7112702d1..0ac569278 100644
--- a/src/utils/errors.ts
+++ b/src/utils/errors.ts
@@ -12,7 +12,7 @@ import { i18nKey } from "./i18n";
export enum ErrorCode {
/**
- * Configuration problem due to no MatrixRTC backend/SFU is exposed via .well-known and no fallback configured.
+ * Configuration problem due to no MatrixRTC transport provided by homeserver and no fallback configured.
*/
MISSING_MATRIX_RTC_TRANSPORT = "MISSING_MATRIX_RTC_TRANSPORT",
CONNECTION_LOST_ERROR = "CONNECTION_LOST_ERROR",
@@ -67,7 +67,7 @@ export class ElementCallError extends Error {
}
/**
- * Configuration problem due to no MatrixRTC backend/SFU is exposed via .well-known and no fallback configured.
+ * Configuration problem due to no MatrixRTC transport provided by homeserver and no fallback configured.
*/
export class MatrixRTCTransportMissingError extends ElementCallError {
public domain: string;
diff --git a/src/widget.ts b/src/widget.ts
index 462fc6e05..d4127a835 100644
--- a/src/widget.ts
+++ b/src/widget.ts
@@ -195,7 +195,7 @@ export const initializeWidget = (
// Wait for the config file to be ready (we load very early on so it might not
// be otherwise)
await Config.init();
- await client.startClient({ clientWellKnownPollPeriod: 60 * 10 });
+ await client.startClient();
return client;
};