'use client'
import { useState, useEffect, Suspense } from 'react'
import {
Container,
Box,
Typography,
Button,
Card,
CardContent,
CircularProgress,
Alert
} from '@mui/material'
import {
CheckCircle,
ChatBubble,
AutoAwesome,
EmojiEvents,
Favorite
} from '@mui/icons-material'
import { useRouter, useSearchParams } from 'next/navigation'
import { useTranslations, useLocale } from 'next-intl'
import Link from 'next/link'
function SuccessContent() {
const router = useRouter()
const searchParams = useSearchParams()
const locale = useLocale()
const t = useTranslations('subscription')
const [loading, setLoading] = useState(true)
const [error, setError] = useState('')
useEffect(() => {
// Verify session and refresh user data
const sessionId = searchParams.get('session_id')
if (!sessionId) {
setError(t('errors.noSession'))
setLoading(false)
return
}
// Give webhooks a moment to process, then verify the user's subscription
const timer = setTimeout(async () => {
try {
const token = localStorage.getItem('authToken')
if (!token) {
router.push(`/${locale}/login`)
return
}
// Refresh user profile to confirm upgrade
const response = await fetch('/api/user/profile', {
headers: {
'Authorization': `Bearer ${token}`
}
})
if (response.ok) {
const data = await response.json()
if (data.user.subscriptionTier === 'premium') {
setLoading(false)
} else {
setError(t('errors.upgradeNotConfirmed'))
setLoading(false)
}
} else {
setError(t('errors.loadFailed'))
setLoading(false)
}
} catch (err) {
console.error('Error verifying subscription:', err)
setError(t('errors.generic'))
setLoading(false)
}
}, 2000) // Wait 2 seconds for webhook processing
return () => clearTimeout(timer)
}, [searchParams, router, locale, t])
if (loading) {
return (
{t('success.verifying')}
)
}
if (error) {
return (
{error}
)
}
return (
{/* Success Header */}
{t('success.title')}
{t('success.subtitle')}
{t('success.message')}
{/* Premium Benefits */}
{t('success.benefitsTitle')}
{t('success.benefits.unlimited.title')}
{t('success.benefits.unlimited.description')}
{t('success.benefits.priority.title')}
{t('success.benefits.priority.description')}
{t('success.benefits.support.title')}
{t('success.benefits.support.description')}
{/* Action Buttons */}
}
component={Link}
href={`/${locale}/chat`}
sx={{ py: 1.5 }}
>
{t('success.startChatting')}
{/* Additional Info */}
{t('success.receiptInfo')}
)
}
export default function SubscriptionSuccessPage() {
return (
}
>
)
}