"use client"; import { useEffect, useState } from "react"; import { useRouter, useParams } from "next/navigation"; import { useAuth } from "@/contexts/AuthContext"; import { solutionsApi, SolutionAdmin, getUploadUrl } from "@/lib/api"; import SolutionForm from "@/components/admin/SolutionForm"; import { Loader2, Upload, Trash2 } from "lucide-react"; import YouTubeVideoManager from "@/components/admin/YouTubeVideoManager"; export default function EditSolutionPage() { const { token } = useAuth(); const router = useRouter(); const params = useParams(); const solutionId = Number(params.id); const [solution, setSolution] = useState(null); const [isLoading, setIsLoading] = useState(true); const [isSubmitting, setIsSubmitting] = useState(false); const [isUploading, setIsUploading] = useState(false); const fetchSolution = async () => { if (!token) return; try { const data = await solutionsApi.adminGetOne(solutionId, token); setSolution(data); } catch (err) { alert("솔루션을 찾을 수 없습니다."); router.push("/admin/solutions"); } finally { setIsLoading(false); } }; useEffect(() => { fetchSolution(); }, [token, solutionId]); const handleSubmit = async (data: any) => { if (!token) return; setIsSubmitting(true); try { await solutionsApi.adminUpdate(solutionId, data, token); alert("저장되었습니다."); fetchSolution(); } catch (err) { alert("저장에 실패했습니다."); } finally { setIsSubmitting(false); } }; const handleImageUpload = async ( e: React.ChangeEvent, isMain: boolean ) => { if (!token || !e.target.files?.[0]) return; setIsUploading(true); try { await solutionsApi.adminUploadImage( solutionId, e.target.files[0], isMain, token ); fetchSolution(); } catch (err) { alert("이미지 업로드에 실패했습니다."); } finally { setIsUploading(false); e.target.value = ""; } }; const handleDeleteImage = async (imageId: number) => { if (!token || !confirm("이미지를 삭제하시겠습니까?")) return; try { await solutionsApi.adminDeleteImage(imageId, token); fetchSolution(); } catch (err) { alert("이미지 삭제에 실패했습니다."); } }; if (isLoading) { return (
); } if (!solution) return null; return (

솔루션 수정

{/* Form */}
{/* Image Upload */}
{/* Main Image */}

대표 이미지

{solution.main_image ? (
Main
) : ( )}
{/* Additional Images */}

추가 이미지

{solution.images?.map((img) => (
))}
{/* YouTube Videos */}
); }