'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import dynamic from 'next/dynamic'; import type { ProductDTO } from '@/lib/types'; interface DesignApproval { id: string; customerEmail: string; customerName: string | null; productId: string; product: ProductDTO; designJson: string; color: string; size: string | null; status: string; } const DesignCanvas = dynamic(() => import('@/components/DesignCanvas'), { ssr: false }); export default function EditDesignPage({ params }: { params: { id: string } }) { const router = useRouter(); const [design, setDesign] = useState(null); const [loading, setLoading] = useState(true); const [sending, setSending] = useState(false); useEffect(() => { fetch(`/api/designs/${params.id}`) .then((r) => r.json()) .then((data) => { if (data.product) { const parseIfString = (val: any) => typeof val === 'string' ? JSON.parse(val) : val; data.product.colors = Array.isArray(data.product.colors) ? data.product.colors : parseIfString(data.product.colors || '[]'); data.product.sizes = Array.isArray(data.product.sizes) ? data.product.sizes : (data.product.sizes ? parseIfString(data.product.sizes) : []); data.product.colorPhotos = typeof data.product.colorPhotos === 'object' ? data.product.colorPhotos : (data.product.colorPhotos ? parseIfString(data.product.colorPhotos) : {}); data.product.colorPhotosBack = typeof data.product.colorPhotosBack === 'object' ? data.product.colorPhotosBack : (data.product.colorPhotosBack ? parseIfString(data.product.colorPhotosBack) : {}); data.product.printArea = typeof data.product.printArea === 'object' ? data.product.printArea : parseIfString(data.product.printArea || '{"xPct":0,"yPct":0,"wPct":1,"hPct":1}'); if (data.product.printAreaBack) { data.product.printAreaBack = typeof data.product.printAreaBack === 'object' ? data.product.printAreaBack : parseIfString(data.product.printAreaBack); } } setDesign(data); setLoading(false); }) .catch((err) => { console.error('Error fetching design:', err); setLoading(false); }); }, [params.id]); const handleSendToCustomer = async () => { setSending(true); try { const res = await fetch(`/api/designs/${params.id}/send-to-customer`, { method: 'POST', }); if (res.ok) { router.push(`/admin/designs/${params.id}`); } else { alert('Failed to send to customer'); } } finally { setSending(false); } }; if (loading) return
Loading...
; if (!design) return
Design not found.
; return (
← Back to design approval

{design.product.name}

Editing design for {design.customerName || design.customerEmail}

{/* Full Design Canvas */}
); }