import type { Media } from '$lib/AniList/media'; import { chapterDatabase } from './chapterDatabase'; export const chapterCount = async (manga: Media): Promise => { const chapters = await chapterDatabase.chapters.get(manga.id); if (chapters !== undefined) { return chapters.chapters === -1 ? null : chapters.chapters; } const mangadexData = await ( await fetch( `/mangadex/manga?english=${manga.title.english}&year=${manga.startDate.year}&romaji=${manga.title.romaji}&native=${manga.title.native}` ) ).json(); if (mangadexData['data'] === undefined || mangadexData['data'].length === 0) { await chapterDatabase.chapters.put({ id: manga.id, chapters: -1 }); return null; } const lastChapterData = await ( await fetch(`/mangadex/feed?id=${mangadexData['data'][0]['id']}`) ).json(); if (lastChapterData['data'] === undefined || lastChapterData['data'].length === 0) { await chapterDatabase.chapters.put({ id: manga.id, chapters: -1 }); return null; } let lastChapterIndex = 0; while (lastChapterData['data'][lastChapterIndex]['attributes']['translatedLanguage'] !== 'en') { lastChapterIndex += 1; } let lastChapter = lastChapterData['data'][lastChapterIndex]['attributes']['chapter']; if (lastChapter == 0) { lastChapter = null; } await chapterDatabase.chapters.put({ id: manga.id, chapters: lastChapter }); return lastChapter; };