'use client'; import { useEffect, useState } from 'react'; import { useParams, useRouter } from 'next/navigation'; import { participantService } from '@/lib/services'; import { Loader2 } from 'lucide-react'; // Force dynamic rendering to avoid SSR issues with Supabase export const dynamic = 'force-dynamic'; export default function ShortVoteRedirect() { const params = useParams(); const router = useRouter(); const shortId = params.shortId as string; const [loading, setLoading] = useState(true); const [error, setError] = useState(''); useEffect(() => { if (shortId) { redirectToVotePage(); } }, [shortId]); const redirectToVotePage = async () => { try { setLoading(true); // Récupérer le participant par short_id const participant = await participantService.getByShortId(shortId); if (!participant) { setError('Lien de vote invalide ou expiré'); return; } // Rediriger vers l'ancienne route avec les IDs complets const voteUrl = `/campaigns/${participant.campaign_id}/vote/${participant.id}`; router.replace(voteUrl); } catch (error) { console.error('Erreur lors de la redirection:', error); setError('Erreur lors du chargement du lien de vote'); } finally { setLoading(false); } }; if (loading) { return (
Redirection vers la page de vote...
{error}