Skip to content

Commit c2dac43

Browse files
Refactor:
Implement automatic redirect to dashboard
1 parent 44b67dd commit c2dac43

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

src/pages/PaymentSuccessPage.tsx

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
import { useEffect, useState } from 'react';
23
import { useParams, useNavigate, useSearchParams } from 'react-router-dom';
34
import { 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

Comments
 (0)