'use client'; import { useEffect, useState } from 'react'; import { useSearchParams, useRouter } from 'next/navigation'; import { useTranslations } from 'next-intl'; import { appConfig } from '../../../config/app'; import { SkinId } from '../../../types'; import { useLocalizedSkinName } from '../../../hooks/useLocalizedSkinName'; import { useFeature } from '../../../providers/FeatureProvider'; export default function CheckoutSuccessPage() { const searchParams = useSearchParams(); const router = useRouter(); const t = useTranslations('ui'); const getLocalizedSkinName = useLocalizedSkinName(); const paymentsEnabled = useFeature('paymentsEnabled'); const [countdown, setCountdown] = useState(5); const skinId = searchParams.get('skin') as SkinId; const skin = skinId ? appConfig.skins[skinId] : null; const skinName = skinId ? getLocalizedSkinName(skinId) : ''; // Redirect home immediately if payments are disabled useEffect(() => { if (!paymentsEnabled) { router.replace('/'); } }, [paymentsEnabled, router]); useEffect(() => { if (!paymentsEnabled) return; // Countdown timer to redirect to home const timer = setInterval(() => { setCountdown((prev) => { if (prev <= 1) { clearInterval(timer); // Redirect to home with the purchased skin const params = new URLSearchParams(); if (skinId && skinId !== appConfig.defaultSkin) { params.set('skin', skinId); } const newUrl = `/${params.toString() ? '?' + params.toString() : ''}`; router.push(newUrl); return 0; } return prev - 1; }); }, 1000); return () => clearInterval(timer); }, [skinId, router, paymentsEnabled]); if (!paymentsEnabled) { return null; } const handleGoToApp = () => { const params = new URLSearchParams(); if (skinId && skinId !== appConfig.defaultSkin) { params.set('skin', skinId); } const newUrl = `/${params.toString() ? '?' + params.toString() : ''}`; router.push(newUrl); }; return (
{t('checkout.success.unlockedSkin', { skinName })}
{t('checkout.success.thankYou')}
{/* Action Buttons */}{t('checkout.success.redirecting', { countdown })}
{t('checkout.success.receiptSent')}