diff options
Diffstat (limited to 'src/lib/mangadex.ts')
| -rw-r--r-- | src/lib/mangadex.ts | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/src/lib/mangadex.ts b/src/lib/mangadex.ts index b7656b43..d2eb8c3b 100644 --- a/src/lib/mangadex.ts +++ b/src/lib/mangadex.ts @@ -1,26 +1,50 @@ -import type { Media } from '$lib/AniList/media'; +import { recentMediaActivities, type Media } from '$lib/AniList/media'; +import type { UserIdentity } from './AniList/identity'; import { chapterDatabase } from './chapterDatabase'; -export const chapterCount = async (manga: Media): Promise<number | null> => { +export const chapterCount = async ( + identity: UserIdentity, + manga: Media, + preferActivity = false +): Promise<number | null> => { const chapters = await chapterDatabase.chapters.get(manga.id); if (chapters !== undefined) { return chapters.chapters === -1 ? null : chapters.chapters; } - const mangadexData = await ( - await fetch( - `/api/mangadex/manga?english=${manga.title.english}&year=${manga.startDate.year}&romaji=${manga.title.romaji}&native=${manga.title.native}` - ) - ).json(); + if (preferActivity) { + return await recentMediaActivities(identity, manga); + } + + const tryRecentMediaActivities = async () => { + const anilistData = await recentMediaActivities(identity, manga); + + if (anilistData !== null) { + await chapterDatabase.chapters.put({ + id: manga.id, + chapters: anilistData + }); + + return anilistData; + } - if (mangadexData['data'] === undefined || mangadexData['data'].length === 0) { await chapterDatabase.chapters.put({ id: manga.id, chapters: -1 }); return null; + }; + + const mangadexData = await ( + await fetch( + `/api/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) { + return await tryRecentMediaActivities(); } const lastChapterData = await ( @@ -28,12 +52,7 @@ export const chapterCount = async (manga: Media): Promise<number | null> => { ).json(); if (lastChapterData['data'] === undefined || lastChapterData['data'].length === 0) { - await chapterDatabase.chapters.put({ - id: manga.id, - chapters: -1 - }); - - return null; + return await tryRecentMediaActivities(); } let lastChapter = lastChapterData['data'][0]['attributes']['chapter']; |