import Link from "next/link"; import { useState, useEffect } from "react"; import { ChevronDownIcon } from "@heroicons/react/24/outline"; import { setCookie } from "nookies"; const ChapterSelector = ({ chaptersData, data, setFirstEp, userManga }) => { const [selectedProvider, setSelectedProvider] = useState( chaptersData[0]?.providerId || "" ); const [selectedChapter, setSelectedChapter] = useState(""); const [chapters, setChapters] = useState([]); const [currentPage, setCurrentPage] = useState(1); const [chaptersPerPage] = useState(10); useEffect(() => { const selectedChapters = chaptersData.find( (c) => c.providerId === selectedProvider ); if (selectedChapters) { setSelectedChapter(selectedChapters); setFirstEp(selectedChapters); } setChapters(selectedChapters?.chapters || []); }, [selectedProvider, chaptersData]); // Get current posts const indexOfLastChapter = currentPage * chaptersPerPage; const indexOfFirstChapter = indexOfLastChapter - chaptersPerPage; const currentChapters = chapters.slice( indexOfFirstChapter, indexOfLastChapter ); // Change page const paginate = (pageNumber) => setCurrentPage(pageNumber); const nextPage = () => setCurrentPage((prev) => prev + 1); const prevPage = () => setCurrentPage((prev) => prev - 1); function saveManga() { localStorage.setItem( "manga", JSON.stringify({ manga: selectedChapter, data: data }) ); setCookie(null, "manga", data.id, { maxAge: 24 * 60 * 60, path: "/", }); } // console.log(selectedChapter); // Create page numbers const pageNumbers = []; for (let i = 1; i <= Math.ceil(chapters.length / chaptersPerPage); i++) { pageNumbers.push(i); } // Custom function to handle pagination display const getDisplayedPageNumbers = (currentPage, totalPages, margin) => { const pageRange = [...Array(totalPages).keys()].map((i) => i + 1); if (totalPages <= 10) { return pageRange; } if (currentPage <= margin) { return [...pageRange.slice(0, margin), "...", totalPages]; } if (currentPage > totalPages - margin) { return [1, "...", ...pageRange.slice(-margin)]; } return [ 1, "...", ...pageRange.slice(currentPage - 2, currentPage + 1), "...", totalPages, ]; }; const displayedPageNumbers = getDisplayedPageNumbers( currentPage, pageNumbers.length, 9 ); // console.log(currentChapters); return (
Updated At: {new Date(chapter.updatedAt).toLocaleString()}