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'; 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 openedSidebarFolderAtom = useMemo(() => makeOpenedSidebarFolderAtom(userId), [userId]); return ( {children} ); }