45 lines
2.1 KiB
TypeScript
45 lines
2.1 KiB
TypeScript
import React, { ReactNode, useMemo } from 'react';
|
|
import { useMatrixClient } from '../../hooks/useMatrixClient';
|
|
import { makeClosedNavCategoriesAtom } from '../../state/closedNavCategories';
|
|
import { ClosedNavCategoriesProvider } from '../../state/hooks/closedNavCategories';
|
|
import { makeClosedLobbyCategoriesAtom } from '../../state/closedLobbyCategories';
|
|
import { ClosedLobbyCategoriesProvider } from '../../state/hooks/closedLobbyCategories';
|
|
import { makeNavToActivePathAtom } from '../../state/navToActivePath';
|
|
import { NavToActivePathProvider } from '../../state/hooks/navToActivePath';
|
|
import { makeOpenedSidebarFolderAtom } from '../../state/openedSidebarFolder';
|
|
import { OpenedSidebarFolderProvider } from '../../state/hooks/openedSidebarFolder';
|
|
import { makeRoomToActiveThreadAtom } from '../../state/roomToActiveThread';
|
|
import { RoomToActiveThreadProvider } from '../../state/hooks/roomToActiveThread';
|
|
|
|
type ClientInitStorageAtomProps = {
|
|
children: ReactNode;
|
|
};
|
|
export function ClientInitStorageAtom({ children }: ClientInitStorageAtomProps) {
|
|
const mx = useMatrixClient();
|
|
const userId = mx.getUserId()!;
|
|
|
|
const closedNavCategoriesAtom = useMemo(() => makeClosedNavCategoriesAtom(userId), [userId]);
|
|
|
|
const closedLobbyCategoriesAtom = useMemo(() => makeClosedLobbyCategoriesAtom(userId), [userId]);
|
|
|
|
const navToActivePathAtom = useMemo(() => makeNavToActivePathAtom(userId), [userId]);
|
|
|
|
const roomToActiveThreadAtom = useMemo(() => makeRoomToActiveThreadAtom(userId), [userId]);
|
|
|
|
const openedSidebarFolderAtom = useMemo(() => makeOpenedSidebarFolderAtom(userId), [userId]);
|
|
|
|
return (
|
|
<ClosedNavCategoriesProvider value={closedNavCategoriesAtom}>
|
|
<ClosedLobbyCategoriesProvider value={closedLobbyCategoriesAtom}>
|
|
<NavToActivePathProvider value={navToActivePathAtom}>
|
|
<RoomToActiveThreadProvider value={roomToActiveThreadAtom}>
|
|
<OpenedSidebarFolderProvider value={openedSidebarFolderAtom}>
|
|
{children}
|
|
</OpenedSidebarFolderProvider>
|
|
</RoomToActiveThreadProvider>
|
|
</NavToActivePathProvider>
|
|
</ClosedLobbyCategoriesProvider>
|
|
</ClosedNavCategoriesProvider>
|
|
);
|
|
}
|