2024-05-31 19:49:46 +05:30
|
|
|
import React, { ReactNode } from 'react';
|
|
|
|
|
import { useParams } from 'react-router-dom';
|
|
|
|
|
import { useSelectedRoom } from '../../../hooks/router/useSelectedRoom';
|
2025-03-23 22:09:29 +11:00
|
|
|
import { IsDirectRoomProvider, RoomProvider } from '../../../hooks/useRoom';
|
2024-05-31 19:49:46 +05:30
|
|
|
import { useMatrixClient } from '../../../hooks/useMatrixClient';
|
|
|
|
|
import { JoinBeforeNavigate } from '../../../features/join-before-navigate';
|
|
|
|
|
import { useHomeRooms } from './useHomeRooms';
|
2024-07-30 17:48:59 +05:30
|
|
|
import { useSearchParamsViaServers } from '../../../hooks/router/useSearchParamsViaServers';
|
2024-05-31 19:49:46 +05:30
|
|
|
|
|
|
|
|
export function HomeRouteRoomProvider({ children }: { children: ReactNode }) {
|
|
|
|
|
const mx = useMatrixClient();
|
|
|
|
|
const rooms = useHomeRooms();
|
|
|
|
|
|
2024-07-30 17:48:59 +05:30
|
|
|
const { roomIdOrAlias, eventId } = useParams();
|
|
|
|
|
const viaServers = useSearchParamsViaServers();
|
2024-05-31 19:49:46 +05:30
|
|
|
const roomId = useSelectedRoom();
|
|
|
|
|
const room = mx.getRoom(roomId);
|
|
|
|
|
|
|
|
|
|
if (!room || !rooms.includes(room.roomId)) {
|
2024-07-30 17:48:59 +05:30
|
|
|
return (
|
|
|
|
|
<JoinBeforeNavigate
|
|
|
|
|
roomIdOrAlias={roomIdOrAlias!}
|
|
|
|
|
eventId={eventId}
|
|
|
|
|
viaServers={viaServers}
|
|
|
|
|
/>
|
|
|
|
|
);
|
2024-05-31 19:49:46 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<RoomProvider key={room.roomId} value={room}>
|
2025-03-23 22:09:29 +11:00
|
|
|
<IsDirectRoomProvider value={false}>{children}</IsDirectRoomProvider>
|
2024-05-31 19:49:46 +05:30
|
|
|
</RoomProvider>
|
|
|
|
|
);
|
|
|
|
|
}
|