diff options
| author | Fuwn <[email protected]> | 2023-12-17 04:42:55 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-17 04:42:55 -0800 |
| commit | 9ad5f28246db93f6ef72e25d8b477e4f11865ddb (patch) | |
| tree | 46b7505e35070d3e33f2844f53131b2da3db8dd4 /src/lib/Media/manga.ts | |
| parent | refactor(manga): move cache (diff) | |
| download | due.moe-9ad5f28246db93f6ef72e25d8b477e4f11865ddb.tar.xz due.moe-9ad5f28246db93f6ef72e25d8b477e4f11865ddb.zip | |
refactor(manga): move chapters and volumes
Diffstat (limited to 'src/lib/Media/manga.ts')
| -rw-r--r-- | src/lib/Media/manga.ts | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/src/lib/Media/manga.ts b/src/lib/Media/manga.ts deleted file mode 100644 index 95d45697..00000000 --- a/src/lib/Media/manga.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { recentMediaActivities, type Media } from '$lib/AniList/media'; -import settings from '../../stores/settings'; -import type { UserIdentity } from '../AniList/identity'; -import { chapterDatabase } from './Manga/database'; - -export const volumeCount = async (manga: Media): Promise<number | null> => - (await chapterDatabase.chapters.get(manga.id))?.volumes as number | null; - -export const chapterCount = async ( - identity: UserIdentity, - manga: Media, - disableGuessing: boolean - // preferActivity = false -): Promise<number | null> => { - const chapters = await chapterDatabase.chapters.get(manga.id); - - if (chapters !== undefined) return chapters.chapters === -1 ? null : chapters.chapters; - - // if (preferActivity) { - // return await recentMediaActivities(identity, manga); - // } - - const tryRecentMediaActivities = async () => { - if (disableGuessing) return null; - - const anilistData = await recentMediaActivities(identity, manga, settings.get().guessMethod); - - await chapterDatabase.chapters.put({ - id: manga.id, - chapters: anilistData ? anilistData : -1, - volumes: null - }); - - return anilistData; - }; - - if (manga.format === 'NOVEL') return await tryRecentMediaActivities(); - - const mangadexData = await fetch( - `/api/mangadex/manga?english=${manga.title.english}&year=${manga.startDate.year}&romaji=${manga.title.romaji}&native=${manga.title.native}&status=${manga.status}` - ); - - if ((await mangadexData.clone().text()) === 'rate-limited') return -22; - - const mangadexDataJson = await mangadexData.json(); - - if (mangadexDataJson['data'] === undefined || mangadexDataJson['data'].length === 0) - return await tryRecentMediaActivities(); - - const mangadexId = mangadexDataJson['data'][0]['id']; - const lastChapterData = await fetch(`/api/mangadex/feed?id=${mangadexId}`); - - if ((await lastChapterData.clone().text()) === 'rate-limited') return -22; - - const lastChapterDataJson = await lastChapterData.json(); - - if (lastChapterDataJson['data'] === undefined || lastChapterDataJson['data'].length === 0) - return await tryRecentMediaActivities(); - - let lastChapter = lastChapterDataJson['data'][0]['attributes']['chapter']; - let completedVolumes = null; - - if ((manga.mediaListEntry || { progress: 0 }).progress > lastChapter) { - const anilistData = await recentMediaActivities(identity, manga, settings.get().guessMethod); - - if (anilistData !== null && anilistData > lastChapter) lastChapter = anilistData; - } - - if (!settings.get().disableOutOfDateVolumeWarning) { - const volumeOfChapterDataResponse = await fetch( - `/api/mangadex/chapter?id=${mangadexId}&chapter=${manga.mediaListEntry?.progress}` - ); - - if ((await volumeOfChapterDataResponse.clone().text()) === 'rate-limited') return -22; - - const volumeOfChapterData = await volumeOfChapterDataResponse.json(); - let lastAvailableVolume = lastChapterDataJson['data'][0]['attributes']['volume']; - - if (lastAvailableVolume === null) { - let chapterIndex = 0; - - while (chapterIndex < lastChapterDataJson['data'].length && lastAvailableVolume === null) { - if (lastChapterDataJson['data'][chapterIndex]['attributes']['volume'] !== null) - lastAvailableVolume = lastChapterDataJson['data'][chapterIndex]['attributes']['volume']; - - chapterIndex += 1; - } - } - - if (volumeOfChapterData['data'] !== undefined && volumeOfChapterData['data'].length > 0) { - const volumeOfChapter = volumeOfChapterData['data'][0]['attributes']['volume']; - - if (volumeOfChapter !== null) completedVolumes = volumeOfChapter; - - if (completedVolumes === volumeOfChapter) completedVolumes -= 1; - } - } - - if (lastChapter == 0) lastChapter = -1; - - await chapterDatabase.chapters.put({ - id: manga.id, - chapters: Number(lastChapter), - volumes: completedVolumes - }); - - return Number(lastChapter); -}; - -export const estimatedDayReading = (chapters: number) => chapters / 164; |