31 lines
813 B
TypeScript
31 lines
813 B
TypeScript
'use client';
|
|
import { createContext, ReactNode, useEffect } from 'react';
|
|
import { useModified, useWebsiteQuery } from '@/components/hooks';
|
|
import { Loading } from '@umami/react-zen';
|
|
import { Website } from '@/generated/prisma/client';
|
|
|
|
export const WebsiteContext = createContext<Website>(null);
|
|
|
|
export function WebsiteProvider({
|
|
websiteId,
|
|
children,
|
|
}: {
|
|
websiteId: string;
|
|
children: ReactNode;
|
|
}) {
|
|
const { modified } = useModified(`website:${websiteId}`);
|
|
const { data: website, isFetching, isLoading, refetch } = useWebsiteQuery(websiteId);
|
|
|
|
useEffect(() => {
|
|
if (modified) {
|
|
refetch();
|
|
}
|
|
}, [modified]);
|
|
|
|
if (isFetching && isLoading) {
|
|
return <Loading position="page" />;
|
|
}
|
|
|
|
return <WebsiteContext.Provider value={website}>{children}</WebsiteContext.Provider>;
|
|
}
|