import React, { useEffect, useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { Layout } from '../components/Layout/Layout.jsx'; import { Toolbar } from '../components/Toolbar/Toolbar.jsx'; import { useManga } from '../context/MangaContext.jsx'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faStar, faDownload, faEye, faArrowLeft, faRefresh, faBookmark, faShare } from '@fortawesome/free-solid-svg-icons'; export function MangaDetailPage() { const { slug } = useParams(); const navigate = useNavigate(); const { detailedMangas, loading, error, loadMangaDetail, getMangaFromCollection } = useManga(); const [isLoadingDetails, setIsLoadingDetails] = useState(false); // Obtenir les données du manga depuis le cache ou la collection const manga = detailedMangas[slug]; const collectionManga = getMangaFromCollection(slug); const displayManga = manga || collectionManga; useEffect(() => { const loadDetails = async () => { if (!manga && displayManga) { setIsLoadingDetails(true); await loadMangaDetail(slug); setIsLoadingDetails(false); } else if (!manga && !displayManga) { await loadMangaDetail(slug); } }; loadDetails(); }, [slug, manga, displayManga, loadMangaDetail]); const handleAddMangaClick = (query = '') => { navigate(`/add${query ? `?q=${encodeURIComponent(query)}` : ''}`); }; const toolbarConfig = { leftSection: [ { icon: faArrowLeft, navigateBack: true }, { icon: faRefresh, onClick: () => {} } ], rightSection: [ { icon: faBookmark, onClick: () => {} }, { icon: faShare, onClick: () => {} }, { icon: faDownload, onClick: () => {} } ] }; if (loading && !displayManga) { return
{displayManga.description}
| # | Title | Added | Actions |
|---|---|---|---|
| {chapter.number} | {chapter.title} | {new Date(chapter.createdAt).toLocaleDateString()} |