'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 (
Please wait while we finish setting up your Stripe integration...
> )} {status === 'success' && ( <>You can now return to the dashboard to start using payments.
> )} {status === 'error' && ( <>Please try again or contact support if the problem persists.
> )}