'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import type { Product } from '../../features/inventory/types'; type Props = { products: Product[]; pantryProductIds: Set; onCreated?: () => void; }; export default function AddToPantryForm({ products, pantryProductIds, onCreated }: Props) { const [selectedId, setSelectedId] = useState(''); const [isPending, setIsPending] = useState(false); const [error, setError] = useState(null); const router = useRouter(); const available = products.filter((p) => !pantryProductIds.has(p.id)); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!selectedId) return; setError(null); setIsPending(true); try { const res = await fetch('/api/admin/pantry-item', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ productId: Number(selectedId) }), }); if (!res.ok) { const data = await res.json().catch(() => ({})); throw new Error(data?.error || 'Kunde inte lägga till'); } setSelectedId(''); if (onCreated) onCreated(); else router.refresh(); } catch (err) { setError(err instanceof Error ? err.message : 'Okänt fel'); } finally { setIsPending(false); } } return (
{error && {error}}
); }