Use rtc transport action with widgets

This commit is contained in:
Valere
2026-07-27 14:42:25 +02:00
parent 62eeb10d38
commit ffb6b0a5f6
3 changed files with 25 additions and 28 deletions

View File

@@ -95,7 +95,7 @@
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"loglevel": "^1.9.1", "loglevel": "^1.9.1",
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
"matrix-widget-api": "^1.16.1", "matrix-widget-api": "^1.18.0",
"node-stdlib-browser": "^1.3.1", "node-stdlib-browser": "^1.3.1",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"observable-hooks": "^4.2.3", "observable-hooks": "^4.2.3",

12
pnpm-lock.yaml generated
View File

@@ -188,8 +188,8 @@ importers:
specifier: github:matrix-org/matrix-js-sdk#develop specifier: github:matrix-org/matrix-js-sdk#develop
version: https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/8c95727b6278fe7942c20d0b9485f984dd0694b7 version: https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/8c95727b6278fe7942c20d0b9485f984dd0694b7
matrix-widget-api: matrix-widget-api:
specifier: ^1.16.1 specifier: ^1.18.0
version: 1.17.0 version: 1.18.0
node-stdlib-browser: node-stdlib-browser:
specifier: ^1.3.1 specifier: ^1.3.1
version: 1.3.1 version: 1.3.1
@@ -4864,6 +4864,9 @@ packages:
matrix-widget-api@1.17.0: matrix-widget-api@1.17.0:
resolution: {integrity: sha512-5FHoo3iEP3Bdlv5jsYPWOqj+pGdFQNLWnJLiB0V7Ygne7bb+Gsj3ibyFyHWC6BVw+Z+tSW4ljHpO17I9TwStwQ==} resolution: {integrity: sha512-5FHoo3iEP3Bdlv5jsYPWOqj+pGdFQNLWnJLiB0V7Ygne7bb+Gsj3ibyFyHWC6BVw+Z+tSW4ljHpO17I9TwStwQ==}
matrix-widget-api@1.18.0:
resolution: {integrity: sha512-4T2f2koWmx05p1BLcT/9YGGGPSXpPT+PA4Oap/5fjhXsWPxMGJiGL97YpANMYLKsnE1sScYFeuyxIgdc1Qo+Ew==}
md5.js@1.3.5: md5.js@1.3.5:
resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==}
@@ -10609,6 +10612,11 @@ snapshots:
'@types/events': 3.0.3 '@types/events': 3.0.3
events: 3.3.0 events: 3.3.0
matrix-widget-api@1.18.0:
dependencies:
'@types/events': 3.0.3
events: 3.3.0
md5.js@1.3.5: md5.js@1.3.5:
dependencies: dependencies:
hash-base: 3.0.5 hash-base: 3.0.5

View File

@@ -90,34 +90,23 @@ export class RtcTransportAutoDiscovery {
private async tryBackendTransports(): Promise<LivekitTransportConfig | null> { private async tryBackendTransports(): Promise<LivekitTransportConfig | null> {
const client = this.client; const client = this.client;
// MSC4143: Attempt to fetch transports from backend. // MSC4143: Attempt to fetch transports from backend.
// TODO: Workaround for an issue in the js-sdk RoomWidgetClient that this.logger.info("First try to use getRTCTransports end point ...");
// is not yet implementing _unstable_getRTCTransports properly (via widget API new action). try {
// For now we just skip this call if we are in a widget. const transportList = await doNetworkOperationWithRetry(async () =>
// In widget mode the client is a `RoomWidgetClient` which has no access token (it is using the widget API). client._unstable_getRTCTransports()
// Could be removed once the js-sdk is fixed (https://github.com/matrix-org/matrix-js-sdk/issues/5245) );
const isSPA = !!client.getAccessToken(); const first = transportList.find(isLivekitTransportConfig);
if (isSPA && "_unstable_getRTCTransports" in client) { if (first) {
this.logger.info("First try to use getRTCTransports end point ..."); return first;
try { } else {
const transportList = await doNetworkOperationWithRetry(async () => this.logger.info(
client._unstable_getRTCTransports(), `No livekit transport found in getRTCTransports end point`,
transportList
); );
const first = transportList.find(isLivekitTransportConfig);
if (first) {
return first;
} else {
this.logger.info(
`No livekit transport found in getRTCTransports end point`,
transportList,
);
}
} catch (ex) {
this.logger.info(`Failed to use getRTCTransports end point: ${ex}`);
} }
} else { } catch (ex) {
this.logger.debug(`getRTCTransports end point not available`); this.logger.info(`Failed to use getRTCTransports end point: ${ex}`);
} }
return null; return null;
} }