import React, { useState, useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useAuth } from '../contexts/AuthContext'; import { useUserOrganizations } from '../contexts/UserOrganizationsContext'; const SubscriptionSetup: React.FC = () => { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const { user } = useAuth(); const { createCheckoutSession, getSubscriptionStatus } = useUserOrganizations(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [orgId, setOrgId] = useState(null); useEffect(() => { const orgIdParam = searchParams.get('orgId'); const sessionId = searchParams.get('session_id'); const canceled = searchParams.get('canceled'); if (orgIdParam) { setOrgId(orgIdParam); } if (sessionId) { // Handle successful checkout handleSuccessfulCheckout(sessionId); } else if (canceled) { setError('Subscription setup was canceled. You can try again or use the 14-day trial.'); } }, [searchParams]); const handleSuccessfulCheckout = async (sessionId: string) => { if (!orgId) return; try { setLoading(true); // Get updated subscription status await getSubscriptionStatus(orgId); // Redirect to onboarding to complete organization setup setTimeout(() => { navigate('/onboarding', { replace: true }); }, 2000); } catch (error) { console.error('Error handling successful checkout:', error); setError('There was an issue verifying your subscription. Please contact support.'); } finally { setLoading(false); } }; const handleStartSubscription = async () => { if (!user || !orgId) return; try { setLoading(true); setError(null); const { sessionUrl } = await createCheckoutSession(orgId, user.email!); // Redirect to Stripe Checkout window.location.href = sessionUrl; } catch (error) { console.error('Failed to create checkout session:', error); setError('Failed to start subscription setup. Please try again.'); } finally { setLoading(false); } }; const handleSkipForNow = () => { // Allow user to continue with trial - go to onboarding to complete setup navigate('/onboarding', { replace: true }); }; if (searchParams.get('session_id')) { return (

Subscription Active!

Your subscription has been successfully set up. Redirecting to complete your organization setup...

{loading && (
)}
); } return (

Complete Your Setup

Set up your subscription to unlock all features

{error && (

{error}

)}

14-Day Free Trial

Start with a free trial. No payment required until the trial ends.

Auditly Standard Plan

Up to 50 employees
AI-powered employee reports
Company analytics & insights
AI chat assistant
$29/month

Billed monthly, cancel anytime

Your trial will last 14 days. No payment required until the trial ends.

); }; export default SubscriptionSetup;