'use client'; import { useEffect, useState } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { useRouter } from 'next/navigation'; import { neoApi, getImageUrl } from '@/lib/neoApi'; import { Loader2, HeartCrack } from 'lucide-react'; interface Favorite { id: number; mediaId: string; mediaType: 'movie' | 'tv'; title: string; posterPath: string; } export default function FavoritesPage() { const [favorites, setFavorites] = useState([]); const [loading, setLoading] = useState(true); const router = useRouter(); useEffect(() => { const fetchFavorites = async () => { const token = localStorage.getItem('token'); if (!token) { router.replace('/login'); return; } try { const response = await neoApi.get('/api/v1/favorites'); setFavorites(response.data); } catch (error: any) { console.error('Failed to fetch favorites:', error); // Редиректим только при явном 401 if (error?.response?.status === 401) { localStorage.removeItem('token'); localStorage.removeItem('userName'); localStorage.removeItem('userEmail'); router.replace('/login'); } } finally { setLoading(false); } }; fetchFavorites(); }, [router]); if (loading) { return (
); } if (favorites.length === 0) { return (

Избранное пусто

У вас пока нет избранных фильмов и сериалов

Найти фильмы
); } return (

Избранное

Ваша коллекция любимых фильмов и сериалов

{favorites.map(favorite => (
{favorite.title}

{favorite.title}

{favorite.mediaType === 'movie' ? 'Фильм' : 'Сериал'}

))}
); }