import React, { useState, useEffect } from 'react'; import axios from 'axios'; import { toast } from 'sonner'; import { useTranslation } from 'react-i18next'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; const API_URL = '/api'; export function ItemModal({ item, onClose, onSaved, open }) { const { t } = useTranslation(); const [formData, setFormData] = useState({ url: '', name: '', target_price: '', tags: '', description: '' }); useEffect(() => { if (item) { setFormData({ url: item.url || '', name: item.name || '', target_price: item.target_price || '', tags: item.tags || '', description: item.description || '' }); } else { setFormData({ url: '', name: '', target_price: '', tags: '', description: '' }); } }, [item, open]); const handleSubmit = async (e) => { e.preventDefault(); try { const payload = { ...formData, target_price: formData.target_price ? parseFloat(formData.target_price) : null }; if (item) { await axios.put(`${API_URL}/items/${item.id}`, payload); toast.success(t('toast.itemUpdated')); } else { await axios.post(`${API_URL}/items`, payload); toast.success(t('toast.itemCreated')); } onSaved(); onClose(); } catch (error) { console.error('Error saving item:', error); toast.error(t('toast.itemError')); } }; return ( {item ? t('itemModal.editTitle') : t('itemModal.addTitle')}
setFormData({ ...formData, url: e.target.value })} />
setFormData({ ...formData, name: e.target.value })} />
setFormData({ ...formData, target_price: e.target.value })} />
setFormData({ ...formData, tags: e.target.value })} />