aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Media/manga.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-17 04:42:55 -0800
committerFuwn <[email protected]>2023-12-17 04:42:55 -0800
commit9ad5f28246db93f6ef72e25d8b477e4f11865ddb (patch)
tree46b7505e35070d3e33f2844f53131b2da3db8dd4 /src/lib/Media/manga.ts
parentrefactor(manga): move cache (diff)
downloaddue.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.ts110
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;