import React, { useState, useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { Layout } from '../components/Layout/Layout'; import { Toolbar } from '../components/Toolbar/Toolbar'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faArrowLeft, faSearch, faStar } from '@fortawesome/free-solid-svg-icons'; import { ApiMangaRepository } from '../../infrastructure/api/apiMangaRepository'; import { SearchMangas } from '../../application/useCases/searchMangas'; const mangaRepository = new ApiMangaRepository(); const searchMangas = new SearchMangas(mangaRepository); export function AddMangaPage() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const initialQuery = searchParams.get('q') || ''; const [query, setQuery] = useState(initialQuery); const [results, setResults] = useState([]); const [loading, setLoading] = useState(false); const [selectedManga, setSelectedManga] = useState(null); useEffect(() => { if (initialQuery) { handleSearch(initialQuery); } }, [initialQuery]); const handleSearch = async (searchQuery) => { if (!searchQuery.trim()) { setResults([]); return; } setLoading(true); try { const searchResults = await searchMangas.execute(searchQuery); setResults(searchResults); } catch (error) { console.error('Search error:', error); } finally { setLoading(false); } }; const handleMangaClick = (slug) => { navigate(`/manga/${slug}`); }; const handleAddMangaClick = (query = '') => { navigate(`/add${query ? `?q=${encodeURIComponent(query)}` : ''}`); }; const toolbarConfig = { leftSection: [ { icon: faArrowLeft, onClick: () => navigate(-1) } ] }; return (

Ajouter un manga

{ setQuery(e.target.value); handleSearch(e.target.value); }} placeholder="Rechercher un manga..." className="w-full px-4 py-2 pl-10 border-b border-gray-300 focus:border-green-600 outline-none transition-colors" />
{loading ? (
) : results.length > 0 ? (
{results.map((manga) => (
setSelectedManga(manga)} className="flex gap-4 p-4 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors cursor-pointer" > {manga.title}

{manga.title}

{manga.author}

{manga.rating}
{manga.publicationYear} • {manga.status}
{manga.genres.map((genre, index) => ( {genre} ))}
))}
) : query && !loading && (
Aucun résultat trouvé pour "{query}"
)}
{/* Modal de confirmation */} {selectedManga && (

Ajouter à la bibliothèque

{selectedManga.title}

{selectedManga.title}

{selectedManga.author}

{selectedManga.genres.join(', ')}

)}
); }