<script lang="ts" setup> import { v4 } from "uuid"; import storyForm from "~/components/story/create/storyForm.vue"; import { FormChapter, FormStory } from "@client/types/form/story"; import { IStory } from "@models/stories"; import { IChapter } from "@models/stories/chapter"; import { storyEditMiddleware } from "@client/middleware"; import { IBand } from "@models/band"; import { IUser } from "@models/user"; const rtr = useRoute(); const { data: originalStory } = await useApiFetch<({ chapters: (IChapter & { text: string })[] } & IStory) | null>(`/story/${rtr.params.id}/full`); if (originalStory.value === null) { console.log("IT DOESN'T EXIST DAWG"); throw createError({ statusCode: 404, message: "That story doesn't exist...", }); } definePageMeta({ middleware: ["auth", storyEditMiddleware], }); const story: FormStory = ref<FormStory>({ title: originalStory.value!.title, coAuthor: originalStory.value.coAuthor ? (originalStory.coAuthor as IUser)._id : null, completed: originalStory.value!.completed, chapters: originalStory.value!.chapters.map((a, i) => { // delete return { ...a, chapterTitle: a.title, id: a.id, index: i + 1, bands: (a.bands as IBand[]).map((a) => a._id), content: a.text, uuidKey: v4(), pot: "pasteOrType", } as FormChapter; }), }); useHead({ title: `Editing story: ${originalStory?.title}`, }); </script> <template> <a-typography-title style="text-align: center"> Editing "{{ originalStory?.title }}" </a-typography-title> <!-- <client-only>--> <story-form :can-draft="false" v-model:data="story" :endpoint="`/story/${rtr.params.id}`" endpoint-method="put" /> <!-- </client-only>--> </template>