diff --git a/src/frontend/apps/impress/src/pages/docs/new/index.tsx b/src/frontend/apps/impress/src/pages/docs/new/index.tsx new file mode 100644 index 000000000..cac069ecf --- /dev/null +++ b/src/frontend/apps/impress/src/pages/docs/new/index.tsx @@ -0,0 +1,87 @@ +import Head from 'next/head'; +import { useSearchParams } from 'next/navigation'; +import { useRouter } from 'next/router'; +import { ReactElement, useEffect } from 'react'; + +import { Loading } from '@/components'; +import { LinkReach, useCreateDoc } from '@/features/docs/doc-management'; +import { useUpdateDocLink } from '@/features/docs/doc-share/api/useUpdateDocLink'; +import { useSkeletonStore } from '@/features/skeletons'; +import { MainLayout } from '@/layouts'; +import { NextPageWithLayout } from '@/types/next'; + +const Page: NextPageWithLayout = () => { + const { setIsSkeletonVisible } = useSkeletonStore(); + const router = useRouter(); + const searchParams = useSearchParams(); + const linkReach = searchParams.get('link-reach'); + const linkTitle = searchParams.get('title'); + const linkpermission = searchParams.get('linkpermission'); + const peoplesharing = searchParams.get('peoplesharing'); + + const { + mutate: createDoc, + //isSuccess: isDocCreated, + data: doc, + } = useCreateDoc({ + onSuccess: (doc) => { + if (linkReach || linkpermission || peoplesharing) { + return; + } + + router + .push(`/docs/${doc.id}`) + .then(() => {}) + .catch(() => {}); + }, + onError: () => {}, + }); + + const { mutate: updateDocLink } = useUpdateDocLink(); + + useEffect(() => { + setIsSkeletonVisible(true); + }, [setIsSkeletonVisible]); + + useEffect(() => { + if (doc) { + return; + } + + createDoc(); + }, [createDoc, doc]); + + useEffect(() => { + if (!linkReach || !doc) { + return; + } + + console.log('linkReach', linkReach); + + if (!Object.values(LinkReach).includes(linkReach as LinkReach)) { + throw new Error('Invalid link reach value'); + } + + updateDocLink({ + id: doc.id, + link_reach: linkReach as LinkReach, + //link_role: linkRole, + }); + }, [linkReach, doc, updateDocLink]); + + return ; +}; + +Page.getLayout = function getLayout(page: ReactElement) { + return ( + <> + + + + + {page} + + ); +}; + +export default Page;