import { defineComponent } from 'vue'; import { SbMain, SbMode } from '@schlechtenburg/core'; import PageToolbar from '~~/components/PageToolbar'; import SbLayout from '@schlechtenburg/layout'; import SbHeading from '@schlechtenburg/heading'; import SbParagraph from '@schlechtenburg/paragraph'; import SbImage from '@schlechtenburg/image'; export default defineComponent({ async setup() { const { me } = useMe(); const loggedIn = computed(() => !!me.value?.id); const { page, setPage } = usePage(); const block = page.value?.attributes?.block; const { mode, draft, updateDraft, revision, } = useEditor(); watch(revision, async () => { const { data, error } = await useAsyncGql( 'updatePage', { id: page.value?.id || '', data: { block: draft.value! }, }, ); if (error.value) { console.error('Error updating page!'); console.error('error:', error.value); console.error('data:', data.value); return; } setPage(data.value?.updatePage?.data?.attributes?.block); updateDraft(data.value?.updatePage?.data?.attributes?.block); }); watch(mode, async (newMode) => { if (newMode === SbMode.View) { updateDraft(block!); } }); updateDraft(block!); if (!block) { console.error('No block!'); console.error('page', page.value); } return () => (
{loggedIn.value ? : null} {draft.value ? updateDraft(updatedBlock)} block={draft.value} availableBlocks={[ SbLayout, SbHeading, SbParagraph, SbImage, ]} /> :
Corrupt page: {page.value?.attributes?.path} ({page.value?.id})
}
); }, });