import { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import apiClient from '../api/client';
import { useBusiness } from '../context/BusinessContext';
import RegisterBusinessModal from '../components/RegisterBusinessModal';
function DeleteConfirmModal({ businessName, onCancel, onConfirm, deleting }) {
return (
π
Delete Business?
This will permanently delete {businessName} and all its events, templates, and images. This cannot be undone.
Cancel
{deleting ? <> Deletingβ¦> : 'Yes, Delete'}
);
}
export default function Businesses() {
const navigate = useNavigate();
const { setActiveBusiness } = useBusiness();
const [businesses, setBusinesses] = useState([]);
const [loading, setLoading] = useState(true);
const [showModal, setShowModal] = useState(false);
const [deleteTarget, setDeleteTarget] = useState(null);
const [deleting, setDeleting] = useState(false);
const [error, setError] = useState('');
async function load() {
setLoading(true);
try {
const res = await apiClient.get('/api/businesses');
setBusinesses(res.data.businesses || []);
} catch {
setError('Failed to load businesses');
} finally {
setLoading(false);
}
}
useEffect(() => { load(); }, []);
function handleSelect(biz) {
setActiveBusiness(biz);
navigate(`/${biz.businessId}/global-sms`);
}
async function handleDelete() {
if (!deleteTarget) return;
setDeleting(true);
try {
await apiClient.delete(`/api/businesses/${deleteTarget.businessId}`);
setDeleteTarget(null);
await load();
} catch (err) {
setError(err.response?.data?.error || 'Failed to delete business');
setDeleting(false);
}
}
if (loading) {
return (
);
}
// ββ NO BUSINESSES YET ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
if (businesses.length === 0 && !showModal) {
return (
S
SMS Template Extension
Generate TRAI-compliant SMS templates for your Fynd store. Add your first business to get started.
setShowModal(true)}
className="px-8 py-3 rounded-lg bg-indigo-600 hover:bg-indigo-700 text-white font-medium shadow-sm transition-all focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
>
Add Your First Business
{showModal &&
{ setShowModal(false); load(); }} />}
);
}
// ββ BUSINESS LIST ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
return (
{/* Header */}
Your Businesses
Select a business to manage its SMS templates.
setShowModal(true)}
className="px-4 py-2.5 rounded-lg bg-indigo-600 hover:bg-indigo-700 text-white text-sm font-semibold shadow-sm transition"
>
+ Add Business
{error && (
{error}
setError('')} className="text-red-500 hover:text-red-700 font-bold">×
)}
{businesses.map(biz => (
handleSelect(biz)}
>
{biz.brandName?.[0]?.toUpperCase() || 'B'}
{biz.brandName}
{biz.domain}
Added {new Date(biz.createdAt).toLocaleDateString('en-IN', { day: 'numeric', month: 'short', year: 'numeric' })}
Click to manage β
{ e.stopPropagation(); setDeleteTarget(biz); }}
className="text-xs text-red-500 hover:text-red-700 font-medium transition"
>
Delete
))}
{showModal &&
{ setShowModal(false); load(); }} />}
{deleteTarget && (
setDeleteTarget(null)}
onConfirm={handleDelete}
deleting={deleting}
/>
)}
);
}