fix: restore rooms and DMs after React Router 7 upgrade

Stop double-encoding Matrix IDs in pathUtils, decode route params on read, fix millify CJS import, and read space children from currentState so channels and joins work again.
This commit is contained in:
2026-07-09 02:35:04 +10:00
parent e058165830
commit b4258278d8
16 changed files with 110 additions and 51 deletions

View File

@@ -1,5 +1,5 @@
import { useMatch, useParams } from 'react-router-dom';
import { getExploreFeaturedPath, getExplorePath } from '../../pages/pathUtils';
import { decodeRouteParam, getExploreFeaturedPath, getExplorePath } from '../../pages/pathUtils';
export const useExploreSelected = (): boolean => {
const match = useMatch({
@@ -24,5 +24,5 @@ export const useExploreFeaturedSelected = (): boolean => {
export const useExploreServer = (): string | undefined => {
const { server } = useParams();
return server;
return decodeRouteParam(server);
};

View File

@@ -1,11 +1,13 @@
import { useParams } from 'react-router-dom';
import { decodeRouteParam } from '../../pages/pathUtils';
import { getCanonicalAliasRoomId, isRoomAlias } from '../../utils/matrix';
import { useMatrixClient } from '../useMatrixClient';
export const useSelectedRoom = (): string | undefined => {
const mx = useMatrixClient();
const { roomIdOrAlias } = useParams();
const { roomIdOrAlias: rawRoomIdOrAlias } = useParams();
const roomIdOrAlias = decodeRouteParam(rawRoomIdOrAlias);
const roomId =
roomIdOrAlias && isRoomAlias(roomIdOrAlias)
? getCanonicalAliasRoomId(mx, roomIdOrAlias)

View File

@@ -1,11 +1,13 @@
import { useLocation, useParams } from 'react-router-dom';
import { decodeRouteParam } from '../../pages/pathUtils';
import { getCanonicalAliasRoomId, isRoomAlias } from '../../utils/matrix';
import { useMatrixClient } from '../useMatrixClient';
export const useSelectedSpace = (): string | undefined => {
const mx = useMatrixClient();
const { spaceIdOrAlias } = useParams();
const { spaceIdOrAlias: rawSpaceIdOrAlias } = useParams();
const spaceIdOrAlias = decodeRouteParam(rawSpaceIdOrAlias);
const spaceId =
spaceIdOrAlias && isRoomAlias(spaceIdOrAlias)

View File

@@ -1,15 +1,17 @@
import { useMemo } from 'react';
import { useMatrixClient } from './useMatrixClient';
import { decodeRouteParam } from '../pages/pathUtils';
import { getCanonicalAliasRoomId, isRoomAlias } from '../utils/matrix';
export const useJoinedRoomId = (allRooms: string[], roomIdOrAlias: string): string | undefined => {
const mx = useMatrixClient();
const joinedRoomId = useMemo(() => {
const roomId = isRoomAlias(roomIdOrAlias)
? getCanonicalAliasRoomId(mx, roomIdOrAlias)
: roomIdOrAlias;
const decoded = decodeRouteParam(roomIdOrAlias) ?? roomIdOrAlias;
const roomId = isRoomAlias(decoded)
? getCanonicalAliasRoomId(mx, decoded)
: decoded;
if (roomId && allRooms.includes(roomId)) return roomId;
return undefined;