import { useState, useEffect } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { Box, Button, Container, Heading, Text, useToast, VStack, Spinner } from '@chakra-ui/react'; import { unsubscribeFromNewsletter } from '../services/contact'; import { trackEvent } from '../utils/umami'; export default function NewsletterUnsubscribePage() { const { email: encodedEmail } = useParams<{ email: string }>(); const [isLoading, setIsLoading] = useState(true); const [isSuccess, setIsSuccess] = useState(false); const [error, setError] = useState(null); const toast = useToast(); const navigate = useNavigate(); useEffect(() => { const processUnsubscribe = async () => { if (!encodedEmail) { setError('Neplatný odhlašovací odkaz'); setIsLoading(false); return; } try { const email = decodeURIComponent(encodedEmail); await unsubscribeFromNewsletter(email); setIsSuccess(true); // Track successful unsubscribe trackEvent('Newsletter Unsubscribe', { success: true, source: 'email_link' }); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Při odhlašování z newsletteru došlo k chybě'; setError(errorMessage); toast({ title: 'Chyba', description: errorMessage, status: 'error', duration: 5000, isClosable: true, }); } finally { setIsLoading(false); } }; processUnsubscribe(); }, [encodedEmail, toast]); const handleBackToHome = () => { navigate('/'); }; if (isLoading) { return ( Zpracovávám vaši žádost o odhlášení... ); } if (error) { return ( Chyba při odhlašování {error} ); } if (isSuccess) { return ( Byl jste úspěšně odhlášen Je nám líto, že odcházíte. Vaše e-mailová adresa byla odebrána z našeho seznamu odběratelů. Pokud jste se odhlásili omylem, můžete se znovu přihlásit k odběru na našich webových stránkách. ); } return null; }