"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { updateWaterIrrigator, resetWaterIrrigatorPin, deleteWaterUser } from "@/actions/water-log/admin"; import { AdminButton } from "./design-system"; type WaterUser = { id: string; name: string; role: "irrigator" | "water_admin"; active: boolean; language_preference: string; last_used_at: string | null; created_at: string; }; type Props = { waterUser: WaterUser; backHref?: string; }; export default function WaterUserEditForm({ waterUser, backHref = "/admin/water-log" }: Props) { const router = useRouter(); const [name, setName] = useState(waterUser.name); const [role, setRole] = useState<"irrigator" | "water_admin">(waterUser.role); const [active, setActive] = useState(waterUser.active); const [lang, setLang] = useState(waterUser.language_preference); const [saving, setSaving] = useState(false); const [deleting, setDeleting] = useState(false); const [resetting, setResetting] = useState(false); const [newPin, setNewPin] = useState(null); const [error, setError] = useState(null); async function handleSave(e: React.FormEvent) { e.preventDefault(); setSaving(true); setError(null); const result = await updateWaterIrrigator(waterUser.id, name.trim(), active, lang, role); if (result.success) { router.push(backHref); } else { setError(result.error ?? "Failed to save"); setSaving(false); } } async function handleResetPin() { setResetting(true); const result = await resetWaterIrrigatorPin(waterUser.id); if (result.success && result.pin) { setNewPin(result.pin); } else { setError(result.error ?? "Failed to reset PIN"); } setResetting(false); } async function handleDelete() { if (!window.confirm(`Delete user "${waterUser.name}"? Their log entries will be preserved.`)) return; setDeleting(true); const result = await deleteWaterUser(waterUser.id); if (result.success) { router.push(backHref); } else { setError(result.error ?? "Failed to delete"); setDeleting(false); } } return (
{error && (
{error}
)} {newPin && (

New PIN for {name}:

{newPin}

Write this down — it will not be shown again.

)}
setName(e.target.value)} className="w-full rounded-lg border border-[var(--admin-border)] px-3 py-2 text-sm outline-none focus:border-[var(--admin-accent)]" required />

{role === "water_admin" ? "Can manage headgates, users, and entries" : "Can only submit water log entries"}

Reset PIN
Delete User Save Changes
); }