aboutsummaryrefslogtreecommitdiff
path: root/src/lib/mangadex.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/mangadex.ts')
-rw-r--r--src/lib/mangadex.ts47
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'];