diff --git a/client/src/context/BusinessContext.jsx b/client/src/context/BusinessContext.jsx index 64bc56a..9be6a4c 100644 --- a/client/src/context/BusinessContext.jsx +++ b/client/src/context/BusinessContext.jsx @@ -17,7 +17,9 @@ export function BusinessProvider({ children }) { const hasProfile = !!activeProfile; setHasGlobalSms(hasProfile); const p = activeProfile?.provider || {}; - setIsSetupComplete(hasProfile && !!p.providerName && !!p.senderId && !!p.dltEntityId); + const nextIsSetupComplete = hasProfile && !!p.providerName && !!p.senderId && !!p.dltEntityId; + setIsSetupComplete(nextIsSetupComplete); + return nextIsSetupComplete; }, []); // On mount: rehydrate from sessionStorage and refresh from API @@ -54,7 +56,7 @@ export function BusinessProvider({ children }) { } } rehydrate(); - }, []); + }, [updateReadyState]); const setActiveBusiness = useCallback(async (business) => { setActiveBusinessState(business); @@ -64,12 +66,13 @@ export function BusinessProvider({ children }) { })); try { const smsRes = await apiClient.get(`/api/businesses/${business.businessId}/global-sms/active`); - updateReadyState(smsRes.data?.activeProfile); + return updateReadyState(smsRes.data?.activeProfile); } catch { setHasGlobalSms(false); setIsSetupComplete(false); + return false; } - }, []); + }, [updateReadyState]); const clearBusiness = useCallback(() => { setActiveBusinessState(null); diff --git a/client/src/pages/Businesses.jsx b/client/src/pages/Businesses.jsx index 08c5b41..288d712 100644 --- a/client/src/pages/Businesses.jsx +++ b/client/src/pages/Businesses.jsx @@ -41,6 +41,7 @@ export default function Businesses() { const { setActiveBusiness } = useBusiness(); const [businesses, setBusinesses] = useState([]); const [loading, setLoading] = useState(true); + const [selectingBusinessId, setSelectingBusinessId] = useState(''); const [showModal, setShowModal] = useState(false); const [deleteTarget, setDeleteTarget] = useState(null); const [deleting, setDeleting] = useState(false); @@ -60,9 +61,17 @@ export default function Businesses() { useEffect(() => { load(); }, []); - function handleSelect(biz) { - setActiveBusiness(biz); - navigate(`/${biz.businessId}/global-sms`); + async function handleSelect(biz) { + setSelectingBusinessId(biz.businessId); + setError(''); + try { + const setupComplete = await setActiveBusiness(biz); + navigate(`/${biz.businessId}/${setupComplete ? 'events' : 'global-sms'}`); + } catch (err) { + setError(err.response?.data?.error || 'Failed to open business'); + } finally { + setSelectingBusinessId(''); + } } async function handleDelete() { @@ -145,6 +154,7 @@ export default function Businesses() {
Click to manage →