From 78498afec5b5824669440fd305ae464bb0122e59 Mon Sep 17 00:00:00 2001 From: "v.lagerev" Date: Sat, 9 May 2026 11:33:55 +0300 Subject: [PATCH] =?UTF-8?q?chore(deps):=20bump=20matrix-js-sdk=2038.4.0=20?= =?UTF-8?q?=E2=86=92=2039.4.0=20adapting=20MatrixRTCSession.slotDescriptio?= =?UTF-8?q?n=20rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 18 +++++++++--------- package.json | 2 +- src/app/hooks/useCall.ts | 4 ++-- src/app/hooks/useCallEmbed.ts | 2 +- src/app/hooks/useIncomingRtcNotifications.ts | 20 ++++++++++++-------- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9add6d41..56137dc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "jotai": "2.6.0", "linkify-react": "4.3.2", "linkifyjs": "4.3.2", - "matrix-js-sdk": "38.4.0", + "matrix-js-sdk": "39.4.0", "matrix-widget-api": "1.17.0", "millify": "6.1.0", "pdfjs-dist": "4.2.67", @@ -10647,9 +10647,9 @@ "license": "Apache-2.0" }, "node_modules/matrix-js-sdk": { - "version": "38.4.0", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-38.4.0.tgz", - "integrity": "sha512-Xs9/6pE1eL/F5bP11jrtsZXiPlCda+mW5UC21DifvpjHWvAZsz4rq24rXd4s5/oPrIZKJqP8Fnfcic870ben2w==", + "version": "39.4.0", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-39.4.0.tgz", + "integrity": "sha512-0RZLcwbMxMTU+ORPhpFUnX8nDbKwLtdW20T6VesSxEwjKL5j2TM/mIt4u3h0HJiMh63PpAb2QUcNr0R82YfTOA==", "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.12.5", @@ -10660,10 +10660,10 @@ "jwt-decode": "^4.0.0", "loglevel": "^1.9.2", "matrix-events-sdk": "0.0.1", - "matrix-widget-api": "^1.10.0", + "matrix-widget-api": "^1.14.0", "oidc-client-ts": "^3.0.1", "p-retry": "7", - "sdp-transform": "^2.14.1", + "sdp-transform": "^3.0.0", "unhomoglyph": "^1.0.6", "uuid": "13" }, @@ -12389,9 +12389,9 @@ } }, "node_modules/sdp-transform": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.15.0.tgz", - "integrity": "sha512-KrOH82c/W+GYQ0LHqtr3caRpM3ITglq3ljGUIb8LTki7ByacJZ9z+piSGiwZDsRyhQbYBOBJgr2k6X4BZXi3Kw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-3.0.0.tgz", + "integrity": "sha512-gfYVRGxjHkGF2NPeUWHw5u6T/KGFtS5/drPms73gaSuMaVHKCY3lpLnGDfswVQO0kddeePoti09AwhYP4zA8dQ==", "license": "MIT", "bin": { "sdp-verify": "checker.js" diff --git a/package.json b/package.json index 676ada02..10ef8ca0 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "jotai": "2.6.0", "linkify-react": "4.3.2", "linkifyjs": "4.3.2", - "matrix-js-sdk": "38.4.0", + "matrix-js-sdk": "39.4.0", "matrix-widget-api": "1.17.0", "millify": "6.1.0", "pdfjs-dist": "4.2.67", diff --git a/src/app/hooks/useCall.ts b/src/app/hooks/useCall.ts index 1364e459..1692a57c 100644 --- a/src/app/hooks/useCall.ts +++ b/src/app/hooks/useCall.ts @@ -35,12 +35,12 @@ export const useCallSession = (room: Room): MatrixRTCSession => { export const useCallMembers = (room: Room, session: MatrixRTCSession): CallMembership[] => { const [memberships, setMemberships] = useState( - MatrixRTCSession.sessionMembershipsForRoom(room, session.sessionDescription) + MatrixRTCSession.sessionMembershipsForRoom(room, session.slotDescription) ); useEffect(() => { const updateMemberships = () => { - setMemberships(MatrixRTCSession.sessionMembershipsForRoom(room, session.sessionDescription)); + setMemberships(MatrixRTCSession.sessionMembershipsForRoom(room, session.slotDescription)); }; updateMemberships(); diff --git a/src/app/hooks/useCallEmbed.ts b/src/app/hooks/useCallEmbed.ts index 4784f89b..6d215458 100644 --- a/src/app/hooks/useCallEmbed.ts +++ b/src/app/hooks/useCallEmbed.ts @@ -47,7 +47,7 @@ export const createCallEmbed = ( ): CallEmbed => { const rtcSession = mx.matrixRTC.getRoomSession(room); const ongoing = - MatrixRTCSession.sessionMembershipsForRoom(room, rtcSession.sessionDescription).length > 0; + MatrixRTCSession.sessionMembershipsForRoom(room, rtcSession.slotDescription).length > 0; const intent = CallEmbed.getIntent(dm, ongoing, voiceOnly); const widget = CallEmbed.getWidget(mx, room, intent, themeKind); diff --git a/src/app/hooks/useIncomingRtcNotifications.ts b/src/app/hooks/useIncomingRtcNotifications.ts index 100164bc..0d93137b 100644 --- a/src/app/hooks/useIncomingRtcNotifications.ts +++ b/src/app/hooks/useIncomingRtcNotifications.ts @@ -43,8 +43,12 @@ import { } from '../utils/rtcNotification'; import { callForegroundService } from '../plugins/call/callForegroundService'; -// Returns "" for room-scoped calls (MSC4143/MSC3401v2 — empty call_id means -// "the only call in this room"). Returns undefined when no membership is known. +// Returns "" for room-scoped calls (MSC4143/MSC3401v2 — empty call_id / slot id +// means "the only call in this room"). Returns undefined when no membership is +// known. matrix-js-sdk 39+ exposes the room-scoped id as +// `slotDescription.id` (parsed from `slot_id = '{application}#{id}'` for +// `m.rtc.member` or computed from legacy `call_id` for `m.call.member`); the +// runtime `CallMembership.callId` getter was removed. const findCallIdSync = ( mx: MatrixClient, room: Room, @@ -52,9 +56,9 @@ const findCallIdSync = ( membershipEventId: string ): string | undefined => { const session = mx.matrixRTC.getRoomSession(room); - const senderMembership = session.memberships.find((m) => m.sender === sender); - if (senderMembership && typeof senderMembership.callId === 'string') { - return senderMembership.callId; + const senderMembership = session.memberships.find((m) => m.userId === sender); + if (senderMembership) { + return senderMembership.slotDescription.id; } const stateEvents = room.currentState.getStateEvents(EventType.GroupCallMemberPrefix); @@ -217,7 +221,7 @@ export const useIncomingRtcNotifications = (): void => { const subscribeMemberships = (room: Room): (() => void) => { const session = mx.matrixRTC.getRoomSession(room); const handler = (_old: CallMembership[], next: CallMembership[]) => { - if (next.some((m) => m.sender === mx.getUserId())) { + if (next.some((m) => m.userId === mx.getUserId())) { removeByRoom(room.roomId); } }; @@ -299,7 +303,7 @@ export const useIncomingRtcNotifications = (): void => { // Already participating in the room session → suppress duplicate toast. const session = mx.matrixRTC.getRoomSession(room); - if (session.memberships.some((m) => m.sender === mx.getUserId())) { + if (session.memberships.some((m) => m.userId === mx.getUserId())) { removeFromRegistry(); return; } @@ -326,7 +330,7 @@ export const useIncomingRtcNotifications = (): void => { // yield for seconds (5s MembershipsChanged wait, then fetchRoomEvent) — // a membership join or a matching decline can land meanwhile and must be // observed before we commit the ADD. - if (session.memberships.some((m) => m.sender === mx.getUserId())) { + if (session.memberships.some((m) => m.userId === mx.getUserId())) { removeFromRegistry(); return; }