'use client' import React, { useEffect, useState } from 'react' import { useRouter, useSearchParams } from 'next/navigation' import { useLHSession } from '@components/Contexts/LHSessionContext' import { useOrg } from '@components/Contexts/OrgContext' import { getUriWithOrg } from '@services/config/config' import { Check, Loader2, AlertTriangle } from 'lucide-react' import { motion } from 'framer-motion' import toast from 'react-hot-toast' import { verifyStripeConnection } from '@services/payments/payments' import Image from 'next/image' import learnhouseIcon from 'public/learnhouse_bigicon_1.png' function StripeConnectCallback() { const router = useRouter() const searchParams = useSearchParams() const session = useLHSession() as any const [status, setStatus] = useState<'processing' | 'success' | 'error'>('processing') const [message, setMessage] = useState('') useEffect(() => { const verifyConnection = async () => { try { const code = searchParams.get('code') const state = searchParams.get('state') const orgId = state?.split('=')[1] // Extract org_id value after '=' if (!code || !orgId) { throw new Error('Missing required parameters') } const response = await verifyStripeConnection( parseInt(orgId), code, session?.data?.tokens?.access_token ) // Wait for 1 second to show processing state await new Promise(resolve => setTimeout(resolve, 1000)) setStatus('success') setMessage('Successfully connected to Stripe!') // Close the window after 2 seconds of showing success setTimeout(() => { window.close() }, 2000) } catch (error) { console.error('Error verifying Stripe connection:', error) setStatus('error') setMessage('Failed to complete Stripe connection') toast.error('Failed to connect to Stripe') } } if (session) { verifyConnection() } }, [session, router, searchParams]) return (
{status === 'processing' && ( <>

Completing Stripe Connection

Please wait while we finish setting up your Stripe integration...

)} {status === 'success' && ( <>

{message}

You can now return to the dashboard to start using payments.

)} {status === 'error' && ( <>

{message}

Please try again or contact support if the problem persists.

)}
) } export default StripeConnectCallback