import { formatDateToMonthDayYear } from "@/lib/utils"; import { Chapter, Ad } from "@/lib/types"; import { fetchReleases } from "@/lib/api"; import Link from "next/link"; export const metadata = { title: 'Release page', description: 'NullTranslationGroup Announcement page', }; export default async function ReleasePage() { let current_chapters: Chapter[] = []; let future_chapters: Chapter[] = []; try { const releases = await fetchReleases(); current_chapters = releases.current_chapters future_chapters = releases.future_chapters } catch (error) { console.error(error); return (

Failed to load releases.

); } const sorted_current_chapters = current_chapters.sort((a, b) => new Date(a.release_datetime).getTime() - new Date(b.release_datetime).getTime()); const sorted_future_chapters = future_chapters.sort((a, b) => new Date(a.release_datetime).getTime() - new Date(b.release_datetime).getTime()); const groupChaptersByNovel = (chapters: Chapter[]) => { return chapters.reduce((acc, chapter) => { const bookTitle = chapter.book?.title || "Unknown Title"; if (!acc[bookTitle]) { acc[bookTitle] = []; } acc[bookTitle].push(chapter); return acc; }, {} as Record); }; const groupedCurrentChapters = groupChaptersByNovel(sorted_current_chapters) const groupedFutureChapters = groupChaptersByNovel(sorted_future_chapters); return (
WANT TO READ AHEAD OF SCHEDULE ? JOIN OUR PATREON !
{/* Current Releases Section */}

Current Releases

{Object.keys(groupedCurrentChapters).length > 0 ? ( Object.entries(groupedCurrentChapters) .sort(([titleA], [titleB]) => titleA.localeCompare(titleB)) .map(([bookTitle, chapters]) => (
{bookTitle}
    {chapters.map((chapter) => (
  • Chapter {chapter.number}: {chapter.title}

    Released on:{" "} {formatDateToMonthDayYear( new Date(chapter.release_datetime) )}

  • ))}
)) ) : (

No current releases available.

)}
{/* Future Releases Section */}

Future Releases

{Object.keys(groupedFutureChapters).length > 0 ? ( Object.entries(groupedFutureChapters) .sort(([titleA], [titleB]) => titleA.localeCompare(titleB)) .map(([bookTitle, chapters]) => (
{bookTitle}
    {chapters.map((chapter) => (
  • Chapter {chapter.number}: {chapter.title}

    Release date:{" "} {formatDateToMonthDayYear( new Date(chapter.release_datetime) )}

  • ))}
)) ) : (

No future releases available.

)}
); }