import { useState, FormEvent } from 'react'; interface ProductFormProps { onSubmit: (url: string, refreshInterval: number) => Promise; } const REFRESH_INTERVALS = [ { value: 300, label: '5 minutes' }, { value: 600, label: '10 minutes' }, { value: 900, label: '15 minutes' }, { value: 1800, label: '30 minutes' }, { value: 3600, label: '1 hour' }, { value: 7200, label: '2 hours' }, { value: 21600, label: '6 hours' }, { value: 43200, label: '12 hours' }, { value: 86400, label: '24 hours' }, ]; export default function ProductForm({ onSubmit }: ProductFormProps) { const [url, setUrl] = useState(''); const [refreshInterval, setRefreshInterval] = useState(3600); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setError(''); // Validate URL try { new URL(url); } catch { setError('Please enter a valid URL'); return; } setIsLoading(true); try { await onSubmit(url, refreshInterval); setUrl(''); setRefreshInterval(3600); } catch (err) { if (err instanceof Error) { // eslint-disable-next-line @typescript-eslint/no-explicit-any const axiosError = err as any; setError(axiosError.response?.data?.error || 'Failed to add product'); } else { setError('Failed to add product'); } } finally { setIsLoading(false); } }; return (

Track a New Product

{error &&
{error}
}
setUrl(e.target.value)} placeholder="https://www.example.com/product" required />
{refreshInterval === 300 && ( Warning: Very frequent checks may result in rate limiting )}
); }