diff --git a/frontend/app/agencies/[id]/edit/page.tsx b/frontend/app/agencies/[id]/edit/page.tsx new file mode 100644 index 0000000..e62facd --- /dev/null +++ b/frontend/app/agencies/[id]/edit/page.tsx @@ -0,0 +1,230 @@ +"use client"; + +import { useState, useEffect } from "react"; +import { useParams, useRouter } from "next/navigation"; +import { useAgency, useUpdateAgency } from "@/hooks/useApi"; +import type { Agency } from "@/types"; + +export default function AgencyEditPage() { + const params = useParams(); + const router = useRouter(); + const agencyId = params.id as string; + + const [formData, setFormData] = useState>({}); + + const { data: agency, isLoading } = useAgency(agencyId); + + useEffect(() => { + if (agency) setFormData(agency); + }, [agency]); + + const updateMutation = useUpdateAgency(agencyId); + + const handleChange = ( + e: React.ChangeEvent + ) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: value, + })); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + updateMutation.mutate(formData, { + onSuccess: () => router.push(`/agencies/${agencyId}`), + }); + }; + + if (isLoading) { + return ( +
+
+
+

Loading…

+ +
+
+
+
Loading…
+
+
+ ); + } + + if (!agency) { + return ( +
+
+
+

Error

+ +
+
+
+
+

Agency not found.

+
+
+
+ ); + } + + return ( +
+
+
+

Edit {agency.name}

+ +
+
+ +
+
+
+ + +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +