umami/src/app/(main)/websites/[websiteId]/WebsiteProvider.tsx

31 lines
754 B
TypeScript
Raw Normal View History

2024-02-05 03:53:06 +00:00
import { createContext, ReactNode, useEffect } from 'react';
2024-02-08 07:48:51 +00:00
import { useModified, useWebsite } from 'components/hooks';
2024-02-05 03:53:06 +00:00
import { Loading } from 'react-basics';
export const WebsiteContext = createContext(null);
export function WebsiteProvider({
websiteId,
children,
}: {
websiteId: string;
children: ReactNode;
}) {
2024-02-08 07:48:51 +00:00
const { modified } = useModified(`website:${websiteId}`);
2024-02-05 03:53:06 +00:00
const { data: website, isFetching, isLoading, refetch } = useWebsite(websiteId);
useEffect(() => {
if (modified) {
refetch();
}
}, [modified]);
if (isFetching && isLoading) {
return <Loading position="page" />;
}
return <WebsiteContext.Provider value={website}>{children}</WebsiteContext.Provider>;
}
export default WebsiteProvider;