fix: upgrade matrix-js-sdk 38.2.0 -> 41.5.0 with API compat fixes
- sessionMembershipsForRoom() removed in v41 (was synchronous, static) - Replacement: read session.memberships directly (always up-to-date, sync) - useCall.ts: useCallMembers reads session.memberships - useCallEmbed.ts: createCallEmbed reads rtcSession.memberships - CallEmbedProvider.tsx: inline check on session.memberships - Remove unused MatrixRTCSession import from CallEmbedProvider - clearLoginData: also unregisters service workers and clears SW caches
This commit is contained in:
@@ -111,8 +111,7 @@ function IncomingCall({ dm, info, onIgnore, onAnswer, onReject }: IncomingCallPr
|
||||
useCallMembersChange(
|
||||
session,
|
||||
useCallback(() => {
|
||||
const members = MatrixRTCSession.sessionMembershipsForRoom(room, session.sessionDescription);
|
||||
if (members.length === 0) {
|
||||
if (session.memberships.length === 0) {
|
||||
onIgnore();
|
||||
}
|
||||
}, [room, session, onIgnore]),
|
||||
|
||||
@@ -35,12 +35,12 @@ export const useCallSession = (room: Room): MatrixRTCSession => {
|
||||
|
||||
export const useCallMembers = (room: Room, session: MatrixRTCSession): CallMembership[] => {
|
||||
const [memberships, setMemberships] = useState<CallMembership[]>(
|
||||
MatrixRTCSession.sessionMembershipsForRoom(room, session.sessionDescription),
|
||||
session.memberships,
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const updateMemberships = () => {
|
||||
setMemberships(MatrixRTCSession.sessionMembershipsForRoom(room, session.sessionDescription));
|
||||
setMemberships([...session.memberships]);
|
||||
};
|
||||
|
||||
updateMemberships();
|
||||
|
||||
@@ -49,8 +49,7 @@ export const createCallEmbed = (
|
||||
forceAudioOff = false,
|
||||
): CallEmbed => {
|
||||
const rtcSession = mx.matrixRTC.getRoomSession(room);
|
||||
const ongoing =
|
||||
MatrixRTCSession.sessionMembershipsForRoom(room, rtcSession.sessionDescription).length > 0;
|
||||
const ongoing = rtcSession.memberships.length > 0;
|
||||
|
||||
const intent = CallEmbed.getIntent(dm, ongoing, pref?.video);
|
||||
const initialAudio = forceAudioOff ? false : (pref?.microphone ?? true);
|
||||
|
||||
@@ -88,6 +88,15 @@ export const clearLoginData = async () => {
|
||||
}
|
||||
});
|
||||
|
||||
// Unregister service workers so stale caches don't interfere after a reset
|
||||
if ('serviceWorker' in navigator) {
|
||||
const regs = await navigator.serviceWorker.getRegistrations();
|
||||
await Promise.all(regs.map((r) => r.unregister()));
|
||||
const cacheNames = await caches.keys();
|
||||
await Promise.all(cacheNames.map((c) => caches.delete(c)));
|
||||
}
|
||||
|
||||
window.localStorage.clear();
|
||||
window.location.reload();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user