feat(pages): create story editing page
This commit is contained in:
		
							parent
							
								
									a120a295ae
								
							
						
					
					
						commit
						3d742b968b
					
				
							
								
								
									
										62
									
								
								pages/story/[id]/edit.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								pages/story/[id]/edit.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | |||||||
|  | <script lang="ts" setup> | ||||||
|  | 	import { v4 } from "uuid"; | ||||||
|  | 	import storyForm from "~/components/story/create/storyform.vue"; | ||||||
|  | 	import { FormStory } from "~/lib/client/types/form/story"; | ||||||
|  | 	import { IStory } from "~/models/stories"; | ||||||
|  | 	import { IChapter } from "~/models/stories/chapter"; | ||||||
|  | 	const rtr = useRoute(); | ||||||
|  | 	const { | ||||||
|  | 		data: { value: originalStory }, | ||||||
|  | 	} = await useApiFetch<{ chapters: (IChapter & { text: string })[] } & IStory>( | ||||||
|  | 		`/story/${rtr.params.id}/full`, | ||||||
|  | 	); | ||||||
|  | 	if (!originalStory) { | ||||||
|  | 		await navigateTo("/not-found"); | ||||||
|  | 	} | ||||||
|  | 	definePageMeta({ | ||||||
|  | 		middleware: [ | ||||||
|  | 			(from, to) => { | ||||||
|  | 				const { data: curu } = useAuth(); | ||||||
|  | 				if ( | ||||||
|  | 					curu.value?.user?._id !== originalStory?.author._id && | ||||||
|  | 					curu.value?.user?._id !== originalStory?.coAuthor._id | ||||||
|  | 				) { | ||||||
|  | 					return navigateTo("/403"); | ||||||
|  | 				} | ||||||
|  | 			}, | ||||||
|  | 		], | ||||||
|  | 	}); | ||||||
|  | 	const story: FormStory = { | ||||||
|  | 		title: originalStory!.title, | ||||||
|  | 		coAuthor: originalStory?.coAuthor._id, | ||||||
|  | 		completed: originalStory!.completed, | ||||||
|  | 		chapters: originalStory!.chapters.map((a, i) => ({ | ||||||
|  | 			id: a.id, | ||||||
|  | 			chapterTitle: a.title, | ||||||
|  | 			index: i + 1, | ||||||
|  | 			summary: a.summary, | ||||||
|  | 			notes: a.notes, | ||||||
|  | 			genre: a.genre, | ||||||
|  | 			bands: a.bands.map((a) => a._id), | ||||||
|  | 			characters: a.characters, | ||||||
|  | 			relationships: a.relationships, | ||||||
|  | 			nsfw: a.nsfw, | ||||||
|  | 			loggedInOnly: a.loggedInOnly, | ||||||
|  | 			hidden: a.hidden, | ||||||
|  | 			content: a.text, | ||||||
|  | 			uuidKey: v4(), | ||||||
|  | 		})), | ||||||
|  | 	}; | ||||||
|  | </script> | ||||||
|  | <template> | ||||||
|  | 	<a-typography-title style="text-align: center"> | ||||||
|  | 		Editing "{{ originalStory!.title }}" | ||||||
|  | 	</a-typography-title> | ||||||
|  | 	<story-form | ||||||
|  | 		:can-draft="false" | ||||||
|  | 		:data="story" | ||||||
|  | 		:endpoint="`/story/${rtr.params.id}`" | ||||||
|  | 		endpoint-method="put" | ||||||
|  | 	> | ||||||
|  | 	</story-form> | ||||||
|  | </template> | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user