import { useState, useEffect } from 'react'; import { useParams } from 'react-router-dom'; import apiClient from '../api/client'; export default function Providers() { const { businessId } = useParams(); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [activeProfile, setActiveProfile] = useState(null); const [form, setForm] = useState({ providerName: '', senderId: '', dltEntityId: '', authKey: '', }); const [error, setError] = useState(''); const [success, setSuccess] = useState(''); useEffect(() => { async function load() { try { const [activeRes, providerRes] = await Promise.all([ apiClient.get(`/api/businesses/${businessId}/global-sms/active`), apiClient.get(`/api/businesses/${businessId}/providers`), ]); setActiveProfile(activeRes.data?.activeProfile || null); setForm({ providerName: providerRes.data?.providerName || '', senderId: providerRes.data?.senderId || '', dltEntityId: providerRes.data?.dltEntityId || '', authKey: providerRes.data?.authKey || '', }); } catch (err) { setError(err.response?.data?.error || 'Failed to load provider configuration'); } finally { setLoading(false); } } load(); }, [businessId]); function handleChange(field, value) { setForm(prev => ({ ...prev, [field]: value })); } async function handleSave(e) { e.preventDefault(); setSaving(true); setError(''); setSuccess(''); if (form.senderId && !/^[A-Za-z]{6}$/.test(form.senderId)) { setError('DLT Sender ID must be exactly 6 alphabet characters'); setSaving(false); return; } try { const res = await apiClient.post(`/api/businesses/${businessId}/providers`, form); setForm({ providerName: res.data?.providerName || '', senderId: res.data?.senderId || '', dltEntityId: res.data?.dltEntityId || '', authKey: res.data?.authKey || '', }); setSuccess('Provider configuration saved successfully.'); } catch (err) { setError(err.response?.data?.error || 'Failed to save configuration'); } finally { setSaving(false); } } if (loading) { return (
Edit the provider details stored on the active cURL profile.
{activeProfile && (Active Profile: {activeProfile.name}
)}