"use client";
import { useState } from "react";
import { useRouter } from "next/navigation";
import { AdminDialog } from "@/components/ui/admin-dialog";
import { createVessel, updateVessel, toggleVesselActive } from "./actions";
type VesselRow = {
id: string;
name: string;
code: string;
isActive: boolean;
};
function VesselFormFields({ vessel }: { vessel?: VesselRow }) {
return (
{vessel && (
)}
);
}
export function AddVesselButton() {
const router = useRouter();
const [open, setOpen] = useState(false);
const [pending, setPending] = useState(false);
const [error, setError] = useState("");
async function handleSubmit(e: React.FormEvent) {
e.preventDefault();
setPending(true);
setError("");
const result = await createVessel(new FormData(e.currentTarget));
if ("error" in result) { setError(result.error); setPending(false); }
else { setPending(false); setOpen(false); router.refresh(); }
}
return (
<>
setOpen(false)}>
>
);
}
export function EditVesselButton({ vessel }: { vessel: VesselRow }) {
const router = useRouter();
const [open, setOpen] = useState(false);
const [pending, setPending] = useState(false);
const [toggling, setToggling] = useState(false);
const [error, setError] = useState("");
async function handleSubmit(e: React.FormEvent) {
e.preventDefault();
setPending(true);
setError("");
const fd = new FormData(e.currentTarget);
fd.set("id", vessel.id);
const result = await updateVessel(fd);
if ("error" in result) { setError(result.error); setPending(false); }
else { setPending(false); setOpen(false); router.refresh(); }
}
async function handleToggle() {
setToggling(true);
await toggleVesselActive(vessel.id);
router.refresh();
setToggling(false);
}
return (
<>
setOpen(false)}>
>
);
}