import React, { useState, useEffect } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { ArrowLeft, Plus, Save, Globe, Archive, Trash2 } from 'lucide-react' import { useAuthStore } from '../../store/authStore' import { useStoryStore } from '../../store/storyStore' import { useUIStore } from '../../store/uiStore' import { Button } from '../../components/ui/Button' import { ChapterList } from '../../components/story/ChapterList' import { CollaboratorManager } from '../../components/writer/CollaboratorManager' import { Modal } from '../../components/ui/Modal' const ALL_GENRES = ['Fantasy', 'Sci-Fi', 'Romance', 'Historical Fiction', 'Adventure', 'Thriller', 'Mystery', 'Horror', 'Contemporary', 'Poetry'] export const EditStoryPage: React.FC = () => { const { id } = useParams<{ id: string }>() const navigate = useNavigate() const { currentUser } = useAuthStore() const { stories, chapters, updateStory, deleteStory, updateStoryStatus } = useStoryStore() const { addToast } = useUIStore() const [deleteConfirm, setDeleteConfirm] = useState(false) const [saving, setSaving] = useState(false) const story = stories.find(s => s.story_id === Number(id)) const [form, setForm] = useState({ title: '', short_description: '', content: '', genres: [] as string[], mature_content: false, }) useEffect(() => { if (story) { setForm({ title: story.title, short_description: story.short_description, content: story.content, genres: [...story.genres], mature_content: story.mature_content, }) } }, [story?.story_id]) if (!story) { return (

Story not found

) } const canEdit = currentUser?.user_id === story.user_id || currentUser?.role === 'admin' if (!canEdit) navigate('/writer') const storyChapters = chapters.filter(c => c.story_id === story.story_id) const handleSave = async () => { setSaving(true) await new Promise(r => setTimeout(r, 400)) updateStory(story.story_id, { ...form, updated_at: new Date().toISOString() }) addToast('Story updated!') setSaving(false) navigate(`/story/${story.story_id}`) } const handleDelete = () => { deleteStory(story.story_id) addToast('Story deleted', 'info') navigate('/writer') } const toggleGenre = (g: string) => setForm(f => ({ ...f, genres: f.genres.includes(g) ? f.genres.filter(x => x !== g) : [...f.genres, g], })) return (
{/* Header */}

Edit Story

Status: {story.status}

{story.status === 'draft' && ( )} {story.status === 'published' && ( )}
{/* Form */}
setForm(f => ({ ...f, title: e.target.value }))} className="w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-white focus:outline-none focus:border-indigo-500 font-serif text-lg" />