import { useEffect, useState } from "react"; import { toast } from "sonner"; import { useCategories } from "../hooks/useCategories"; import { useCurrency } from "../hooks/useCurrency"; import { useCreateItem } from "../hooks/useItems"; import { useUIStore } from "../stores/uiStore"; import { CategoryPicker } from "./CategoryPicker"; export function AddToCollectionModal() { const { open, globalItemId, globalItemName } = useUIStore( (s) => s.addToCollectionModal, ); const closeAddToCollection = useUIStore((s) => s.closeAddToCollection); const { data: categories } = useCategories(); const { currency } = useCurrency(); const createItem = useCreateItem(); const [categoryId, setCategoryId] = useState(null); const [notes, setNotes] = useState(""); const [purchasePrice, setPurchasePrice] = useState(""); const [error, setError] = useState(null); // Pre-select first category when categories load useEffect(() => { if (categories && categories.length > 0 && categoryId === null) { setCategoryId(categories[0].id); } }, [categories, categoryId]); // Reset form state when modal closes useEffect(() => { if (!open) { setCategoryId(categories?.[0]?.id ?? null); setNotes(""); setPurchasePrice(""); setError(null); } }, [open, categories]); if (!open || !globalItemId) return null; function handleClose() { closeAddToCollection(); } function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (categoryId === null) { setError("Please select a category"); return; } setError(null); const purchasePriceCents = purchasePrice ? Math.round(Number.parseFloat(purchasePrice) * 100) : undefined; createItem.mutate( { name: globalItemName ?? "Unknown Item", categoryId, globalItemId: globalItemId!, notes: notes || undefined, purchasePriceCents: purchasePriceCents || undefined, }, { onSuccess: () => { toast.success("Added to Collection"); closeAddToCollection(); }, onError: (err) => { setError(err instanceof Error ? err.message : "Failed to add item"); }, }, ); } return (
{ if (e.key === "Escape") handleClose(); }} >
e.stopPropagation()} onKeyDown={() => {}} >

Add to Collection

{globalItemName}

setCategoryId(id)} />