import React, { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { getMediaById } from '../services/supabase'; import { useAuth } from '../contexts/AuthContext'; const MediaPage = () => { const { id } = useParams(); const [media, setMedia] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const { currentUser } = useAuth(); useEffect(() => { const loadMedia = async () => { try { setLoading(true); setError(null); const data = await getMediaById(id); setMedia(data); } catch (err) { console.error('Error loading media:', err); setError('Не удалось загрузить информацию о медиа'); } finally { setLoading(false); } }; if (id) { loadMedia(); } }, [id]); if (loading) { return
Загрузка...
; } if (error) { return
{error}
; } if (!media) { return
Медиа не найдено
; } return (
{/* Заголовок и основная информация */}

{media.title}

Тип: {media.type} {media.release_date && ( Дата выхода: {new Date(media.release_date).toLocaleDateString()} )} {media.rating && ( Рейтинг: {media.rating.toFixed(1)} )}
{media.description && (

{media.description}

)}
{/* Постер и дополнительная информация */} {media.poster_url && (
{media.title}
)} {/* Рецензии */}

Рецензии

{media.reviews && media.reviews.length > 0 ? (
{media.reviews.map((review) => (
{review.user.username} {review.user.is_critic && ( Критик )}

{review.content}

{new Date(review.created_at).toLocaleDateString()}
))}
) : (

Пока нет рецензий

)}
); }; export default MediaPage;