import { useEffect, useState } from 'react'; import { useSearchParams } from 'react-router-dom'; import { Header } from '../components/Header'; import { ArticleCard } from '../components/ArticleCard'; import { Pagination } from '../components/Pagination'; import { Article } from '../types'; import api from '../utils/api'; const ARTICLES_PER_PAGE = 9; export function SearchPage() { const [searchParams, setSearchParams] = useSearchParams(); const query = searchParams.get('q') || ''; const authorId = searchParams.get('author'); const page = parseInt(searchParams.get('page') || '1', 10); const [articles, setArticles] = useState([]); const [totalPages, setTotalPages] = useState(1); const [loading, setLoading] = useState(false); useEffect(() => { const fetchResults = async () => { if (!query && !authorId) return; setLoading(true); try { const response = await api.get('/articles/search', { params: { q: query, author: authorId, page, limit: ARTICLES_PER_PAGE } }); setArticles(response.data.articles); setTotalPages(response.data.totalPages); } catch (error) { console.error('Ошибка поиска:', error); } finally { setLoading(false); } }; window.scrollTo({ top: 0, behavior: 'smooth' }); fetchResults(); }, [query, authorId, page]); const handlePageChange = (newPage: number) => { setSearchParams({ q: query, page: newPage.toString() }); window.scrollTo({ top: 0, behavior: 'smooth' }); }; return (

{query ? `Результаты поиска "${query}"` : 'Статьи автора'}

{articles.length > 0 && (

Найдено {articles.length} статей

)}
{loading ? (
) : articles.length > 0 ? ( <>
{articles.map((article) => ( ))}
{totalPages > 1 && ( )} ) : (query || authorId) ? (

Не найдено ни одной статьи

{authorId ? "Этот автор не опубликовал пока ни одной статьи" : "Ничего не найдено. Попытайтесь изменить сроку поиска"}

) : null}
); }