import { ViewLayout } from '@/application/types'; import { ReactComponent as Add } from '@/assets/add_circle.svg'; import { NormalModal } from '@/components/_shared/modal'; import { notify } from '@/components/_shared/notify'; import { useAppHandlers, useAppOutline } from '@/components/app/app.hooks'; import CreateSpaceModal from '@/components/app/view-actions/CreateSpaceModal'; import SpaceList from '@/components/publish/header/duplicate/SpaceList'; import { Button } from '@mui/material'; import React, { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; function NewPage() { const { t } = useTranslation(); const [open, setOpen] = React.useState(false); const [loading, setLoading] = React.useState(false); const [selectedSpaceId, setSelectedSpaceId] = React.useState(''); const outline = useAppOutline(); const spaceList = useMemo(() => { if (!outline) return []; return outline.map(view => { return { id: view.view_id, extra: JSON.stringify(view.extra), name: view.name, isPrivate: view.is_private, }; }); }, [outline]); const onClose = React.useCallback(() => { setOpen(false); }, []); const { addPage, openPageModal, } = useAppHandlers(); const [createSpaceOpen, setCreateSpaceOpen] = React.useState(false); const handleAddPage = useCallback(async (parentId: string) => { if (!addPage || !openPageModal) return; setLoading(true); try { const viewId = await addPage(parentId, { layout: ViewLayout.Document, }); openPageModal(viewId); onClose(); // eslint-disable-next-line } catch (e: any) { notify.error(e.message); } finally { setLoading(false); } }, [addPage, openPageModal, onClose]); return ( <> { void handleAddPage(selectedSpaceId); }} okButtonProps={{ disabled: !selectedSpaceId, }} okLoading={loading} > {t('publish.addTo')} {` ${t('web.or')} `} } /> setCreateSpaceOpen(false)} onCreated={(spaceId: string) => { void handleAddPage(spaceId); }} /> ); } export default NewPage;