function WhatsappContact({ salesUrl, token }) { const [form, setForm] = React.useState({ name: '', number: '', district: '' }); const [rows, setRows] = React.useState([]); const [saving, setSaving] = React.useState(false); const [error, setError] = React.useState(''); // Tamil Nadu districts list (common set) const DISTRICTS = [ 'Ariyalur','Chengalpattu','Chennai','Coimbatore','Cuddalore','Dharmapuri','Dindigul','Erode','Kallakurichi','Kanchipuram','Kanyakumari','Karur','Krishnagiri','Madurai','Nagapattinam','Namakkal','Nilgiris','Perambalur','Pudukkottai','Ramanathapuram','Ranipet','Salem','Sivaganga','Tenkasi','Thanjavur','Theni','Thiruvallur','Thiruvarur','Thoothukudi','Tiruchirappalli','Tirunelveli','Tiruppur','Tiruvannamalai','Vellore','Viluppuram','Virudhunagar' ]; const onChange = (e) => { const { name, value } = e.target; setForm(f => ({ ...f, [name]: value })); }; const fetchContacts = async () => { try { setError(''); const res = await fetch(salesUrl + '/api/whatsapp-contacts', { headers: { Authorization: 'Bearer ' + token } }); const data = await res.json(); if (!res.ok) throw new Error(data.message || 'Failed to load'); setRows(Array.isArray(data.contacts) ? data.contacts : []); } catch (err) { setError(err.message); } }; React.useEffect(() => { fetchContacts(); }, []); const submit = async (e) => { e.preventDefault(); setSaving(true); setError(''); try { const res = await fetch(salesUrl + '/api/whatsapp-contacts', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: 'Bearer ' + token }, body: JSON.stringify(form) }); const data = await res.json(); if (!res.ok || !data.success) throw new Error(data.message || 'Save failed'); setForm({ name: '', number: '', district: '' }); await fetchContacts(); } catch (err) { setError(err.message); } finally { setSaving(false); } }; // Filtered district suggestions for a simple dropdown list const suggested = React.useMemo(() => { const q = (form.district || '').toLowerCase(); if (!q) return DISTRICTS.slice(0, 8); return DISTRICTS.filter(d => d.toLowerCase().includes(q)).slice(0, 12); }, [form.district]); return (
{suggested.map(d =>
{error ?
{error}
: null}
Saved Whatsapp Contacts
{rows.length === 0 ? (
📇
No Records Found
No contacts found. Add one above to get started.
) : (
{rows.map((r, i) => ( ))}
S.No Contact Name Number District Purchase Amount
{i+1} {r.name || '-'} {r.number || '-'} {r.district || '-'} {(Number(r.purchaseAmount || 0)).toFixed(2)}
)}
); } // Register globally for the in-browser JSX loader window.WhatsappContact = WhatsappContact;