1+
12import { useEffect , useState } from 'react' ;
23import { useParams , useNavigate , useSearchParams } from 'react-router-dom' ;
34import { useCampaigns } from '@/hooks/useCampaigns' ;
@@ -15,6 +16,7 @@ export const PaymentSuccessPage = () => {
1516 const { toast } = useToast ( ) ;
1617 const [ status , setStatus ] = useState < 'loading' | 'success' | 'error' > ( 'loading' ) ;
1718 const [ message , setMessage ] = useState ( '' ) ;
19+ const [ countdown , setCountdown ] = useState ( 3 ) ;
1820
1921 const setupIntentId = searchParams . get ( 'setup_intent' ) ;
2022 const campaignId = searchParams . get ( 'campaign_id' ) ;
@@ -82,6 +84,23 @@ export const PaymentSuccessPage = () => {
8284 processPaymentSuccess ( ) ;
8385 } , [ setupIntentId , campaignId , isSimulation ] ) ;
8486
87+ // Effet pour le countdown et redirection automatique
88+ useEffect ( ( ) => {
89+ if ( status === 'success' ) {
90+ const timer = setInterval ( ( ) => {
91+ setCountdown ( ( prev ) => {
92+ if ( prev <= 1 ) {
93+ navigate ( '/dashboard' ) ;
94+ return 0 ;
95+ }
96+ return prev - 1 ;
97+ } ) ;
98+ } , 1000 ) ;
99+
100+ return ( ) => clearInterval ( timer ) ;
101+ }
102+ } , [ status , navigate ] ) ;
103+
85104 const handleBackToDashboard = ( ) => {
86105 navigate ( '/dashboard' ) ;
87106 } ;
@@ -115,6 +134,12 @@ export const PaymentSuccessPage = () => {
115134 < CardContent className = "text-center space-y-4" >
116135 < p className = "text-gray-600" > { message } </ p >
117136
137+ { status === 'success' && (
138+ < p className = "text-sm text-blue-600" >
139+ Redirection automatique dans { countdown } seconde{ countdown > 1 ? 's' : '' } ...
140+ </ p >
141+ ) }
142+
118143 { isSimulation && status === 'success' && (
119144 < div className = "bg-orange-50 border border-orange-200 rounded-lg p-3" >
120145 < div className = "flex items-center justify-center space-x-2 text-orange-700" >
@@ -131,8 +156,9 @@ export const PaymentSuccessPage = () => {
131156 < Button
132157 onClick = { handleBackToDashboard }
133158 className = "w-full"
159+ variant = "outline"
134160 >
135- Retour au dashboard
161+ Retour immédiat au dashboard
136162 </ Button >
137163 ) }
138164 </ CardContent >
0 commit comments