import React, { useState, useEffect } from 'react'; import { Link } from 'react-router-dom'; import { pb } from '../../services/pocketbaseService'; import { getFileUrl } from '../../services/pocketbaseService'; import { FaStar, FaFilter } from 'react-icons/fa'; import SearchBar from '../../components/ui/SearchBar'; const MobileCatalog = () => { const [media, setMedia] = useState([]); const [loading, setLoading] = useState(true); const [filters, setFilters] = useState({ type: '', genre: '', year: '', sort: '-created' }); const [showFilters, setShowFilters] = useState(false); useEffect(() => { fetchMedia(); }, [filters]); const fetchMedia = async () => { try { setLoading(true); const filter = []; if (filters.type) { filter.push(`type = "${filters.type}"`); } if (filters.genre) { filter.push(`genres ?~ "${filters.genre}"`); } if (filters.year) { filter.push(`year = ${filters.year}`); } const records = await pb.collection('media').getList(1, 50, { sort: filters.sort, filter: filter.join(' && ') }); setMedia(records.items); } catch (error) { console.error('Error fetching media:', error); } finally { setLoading(false); } }; const handleFilterChange = (key, value) => { setFilters(prev => ({ ...prev, [key]: value })); }; if (loading) { return (
); } return (
{/* Фильтры */}
{showFilters && (
)}
{/* Список медиа */}
{media.map((item) => (
{item.title}

{item.title}

{item.average_rating?.toFixed(1) || '0.0'}
{item.review_count || 0} обзоров

{item.type === 'movie' ? 'Фильм' : item.type === 'series' ? 'Сериал' : 'Игра'} • {item.year}

))}
); }; export default MobileCatalog;