From 81997624d4fee6fbaab4197eb4185bfc9b1d2f9b Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 10:51:52 +0000 Subject: [PATCH 1/3] Fix joining rooms by ID MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We use this in embedded mode. Regressed by https://github.com/vector-im/element-call/pull/860 Lowercasing room IDs obviously makes them break, so… don't do that. --- src/room/useLoadGroupCall.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/room/useLoadGroupCall.ts b/src/room/useLoadGroupCall.ts index d90e0bcc..ae4de802 100644 --- a/src/room/useLoadGroupCall.ts +++ b/src/room/useLoadGroupCall.ts @@ -53,15 +53,21 @@ export const useLoadGroupCall = ( const fetchOrCreateRoom = async (): Promise => { try { // We lowercase the localpart when we create the room, so we must lowercase - // it here too (we just do the whole alias). - const room = await client.joinRoom(roomIdOrAlias.toLowerCase(), { + // it here too (we just do the whole alias). We can't do the same to room IDs + // though. + const sanitisedIdOrAlias = + roomIdOrAlias[0] === "#" + ? roomIdOrAlias.toLowerCase() + : roomIdOrAlias; + + const room = await client.joinRoom(sanitisedIdOrAlias, { viaServers, }); logger.info( - `Joined ${roomIdOrAlias}, waiting room to be ready for group calls` + `Joined ${sanitisedIdOrAlias}, waiting room to be ready for group calls` ); await client.waitUntilRoomReadyForGroupCalls(room.roomId); - logger.info(`${roomIdOrAlias}, is ready for group calls`); + logger.info(`${sanitisedIdOrAlias}, is ready for group calls`); return room; } catch (error) { if ( From 47c2e9e101ecfa46e3c5a61b0c0c4090059c57a9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 12:10:58 +0000 Subject: [PATCH 2/3] Don't crash if we can't find our own member event --- package.json | 2 +- src/room/usePTT.ts | 4 +++- yarn.lock | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 58001dba..6a2962d3 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "i18next-browser-languagedetector": "^6.1.8", "i18next-http-backend": "^1.4.4", "lodash": "^4.17.21", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af", "matrix-widget-api": "^1.0.0", "mermaid": "^8.13.8", "normalize.css": "^8.0.1", diff --git a/src/room/usePTT.ts b/src/room/usePTT.ts index 71d7d4e6..a171f0b9 100644 --- a/src/room/usePTT.ts +++ b/src/room/usePTT.ts @@ -113,12 +113,14 @@ export const usePTT = ( }, setState, ] = useState(() => { + // slightly concerningly, this can end up null as we seem to sometimes get + // here before the room state contains our own member event const roomMember = groupCall.room.getMember(client.getUserId()); const activeSpeakerFeed = getActiveSpeakerFeed(userMediaFeeds, groupCall); return { - isAdmin: roomMember.powerLevel >= 100, + isAdmin: roomMember ? roomMember.powerLevel >= 100 : false, talkOverEnabled: false, pttButtonHeld: false, activeSpeakerUserId: activeSpeakerFeed ? activeSpeakerFeed.userId : null, diff --git a/yarn.lock b/yarn.lock index cd7b188e..8bcb7671 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10362,9 +10362,9 @@ matrix-events-sdk@0.0.1: resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd" integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#7b10fa367df357b51c2e78e220d39e5e7967f9e3": - version "23.0.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/7b10fa367df357b51c2e78e220d39e5e7967f9e3" +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af": + version "23.1.0" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/c019f2bb191b52f9bec496a4812b4c59fea758af" dependencies: "@babel/runtime" "^7.12.5" "@matrix-org/matrix-sdk-crypto-js" "^0.1.0-alpha.2" From 785fa51e0cf11a750d88d18f490ebc4529d2bdf1 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 20 Jan 2023 13:12:03 +0000 Subject: [PATCH 3/3] Use merged js-sdk commit --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 6a2962d3..c3a511f7 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "i18next-browser-languagedetector": "^6.1.8", "i18next-http-backend": "^1.4.4", "lodash": "^4.17.21", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#64197bf4db6486d77708125d7fb2e8d7fe001f14", "matrix-widget-api": "^1.0.0", "mermaid": "^8.13.8", "normalize.css": "^8.0.1", diff --git a/yarn.lock b/yarn.lock index 8bcb7671..f5719527 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10362,9 +10362,9 @@ matrix-events-sdk@0.0.1: resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd" integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#c019f2bb191b52f9bec496a4812b4c59fea758af": - version "23.1.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/c019f2bb191b52f9bec496a4812b4c59fea758af" +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#64197bf4db6486d77708125d7fb2e8d7fe001f14": + version "23.1.1" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/64197bf4db6486d77708125d7fb2e8d7fe001f14" dependencies: "@babel/runtime" "^7.12.5" "@matrix-org/matrix-sdk-crypto-js" "^0.1.0-alpha.2"