import { useEffect, useMemo, useState } from 'react'; import { useQuery } from 'react-query'; import { PageContentProps } from '~/types/pageContent'; import { getPageContent } from '~/services/pageContent'; type Props = { path: string; }; const PageContent = ({ path }: Props) => { const [localData, setData] = useState(); const [shouldFetch, setShouldFetch] = useState(false); useEffect(() => { const localData = localStorage.getItem(`page-content:${path}`); if (localData) { setData(JSON.parse(localData)); }else{ setShouldFetch(true); } },[]) const { data, isLoading } = useQuery( `page-content:${path}`, async () => await getPageContent({ path }), { enabled: shouldFetch, onSuccess: (data) => { if (data) { localStorage.setItem(`page-content:${path}`, JSON.stringify(data)); setData(data); } }, } ); const parsedContent = useMemo(() => { if (!localData) return ''; return localData.content.replaceAll( 'src="/web/image', `src="${process.env.NEXT_PUBLIC_ODOO_API_HOST}/web/image` ); }, [localData]); if (isLoading) return ; return
; }; const PageContentSkeleton = () => (
); export default PageContent;