import React, {useState} from "react"; import { useNavigate } from "react-router"; import Alert from "~/components/ui/Alert"; import {updateDish} from "~/utils/api/dishApi"; import {DishType} from "~/types/DishType"; import useRoutes from "~/hooks/useRoutes"; import Spinner from "~/components/Spinner"; import Button from "~/components/ui/Button" interface Props { dish: DishType } const EditDishForm = ({ dish }: Props) => { const [name, setName] = useState(dish.name); const [error, setError] = useState(""); const navigate = useNavigate() const [loading, setLoading] = useState(false); const routes = useRoutes(); const validateForm = () => { if (!name.trim()) { setError("Dish name cannot be empty."); return false; } return true; }; const submitForm = async (e: React.FormEvent) => { e.preventDefault() if (!validateForm()) return; setError(""); setLoading(true); try { const result = await updateDish(dish.id, name); if (result) { navigate(routes.dish.index()) } } catch (error: unknown) { setError(error instanceof Error ? error.message : "An unexpected error occurred"); } finally { setLoading(false); // Reset loading state } } if (loading) { return ; } return (
{ error != '' && { error } } {/* Dish name input */}
setName(e.target.value)} // Update the name state on change className="p-2 border rounded w-full bg-gray-500 border-secondary background-secondary" />
{/* Save button */}
); } export default EditDishForm;