import { useState, useEffect } from 'react'; import apiClient from '../api/client'; export default function WhitelistModal({ businessId, template, onClose, onSuccess }) { const [templateId, setTemplateId] = useState(''); const [toNumber, setToNumber] = useState(''); const [saving, setSaving] = useState(false); const [error, setError] = useState(''); const [providers, setProviders] = useState(null); const [form, setForm] = useState({ providerName: '', senderId: '', dltEntityId: '' }); const [loadingProviders, setLoadingProviders] = useState(true); useEffect(() => { async function fetchProviders() { try { const res = await apiClient.get(`/api/businesses/${businessId}/providers`); setProviders(res.data || {}); setForm({ providerName: res.data?.providerName || '', senderId: res.data?.senderId || '', dltEntityId: res.data?.dltEntityId || '' }); } catch { setProviders({}); } finally { setLoadingProviders(false); } } fetchProviders(); }, [businessId]); async function handleSubmit(e) { e.preventDefault(); if (!templateId.trim() || !toNumber.trim()) return; setSaving(true); setError(''); try { await apiClient.post(`/api/businesses/${businessId}/templates/${template.eventSlug}/publish`, { templateId: templateId.trim(), toNumber: toNumber.trim(), providerName: form.providerName, senderId: form.senderId.toUpperCase(), dltEntityId: form.dltEntityId }); onSuccess(template.eventSlug, templateId.trim()); } catch (err) { if (err.response?.data?.missingFields) { setError(`Missing provider fields: ${err.response.data.missingFields.join(', ')}`); } else { setError(err.response?.data?.error || 'Failed to publish template'); } } finally { setSaving(false); } } const missingName = !providers?.providerName; const missingSender = !providers?.senderId; const missingDlt = !providers?.dltEntityId; const hasMissingProviders = missingName || missingSender || missingDlt; return (
Provide your DLT details and a test number to publish:
{template.eventLabel || template.eventSlug.replace(/_/g, ' ')}
{error && (