From 00095848c8c82b4db9a52f0e85ac29b0f991e99b Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 14 Sep 2023 14:39:22 -0700 Subject: refactor: move media to folder --- src/lib/List/Due/AnimeList.svelte | 2 +- src/lib/List/Due/MangaList.svelte | 2 +- src/lib/List/UpcomingAnimeList.svelte | 2 +- src/lib/List/WatchingAnimeList.svelte | 2 +- src/lib/Media/anime.ts | 67 ++++++++++++++++++++++++++++++++++ src/lib/Media/manga.ts | 69 +++++++++++++++++++++++++++++++++++ src/lib/anime.ts | 67 ---------------------------------- src/lib/manga.ts | 69 ----------------------------------- 8 files changed, 140 insertions(+), 140 deletions(-) create mode 100644 src/lib/Media/anime.ts create mode 100644 src/lib/Media/manga.ts delete mode 100644 src/lib/anime.ts delete mode 100644 src/lib/manga.ts (limited to 'src/lib') diff --git a/src/lib/List/Due/AnimeList.svelte b/src/lib/List/Due/AnimeList.svelte index b6d6f9ef..e6e36b39 100644 --- a/src/lib/List/Due/AnimeList.svelte +++ b/src/lib/List/Due/AnimeList.svelte @@ -7,7 +7,7 @@ import anime from '../../../stores/anime'; import settings from '../../../stores/settings'; import lastPruneTimes from '../../../stores/lastPruneTimes'; - import { airingTime, cleanCache, totalEpisodes, updateMedia } from '$lib/anime'; + import { airingTime, cleanCache, totalEpisodes, updateMedia } from '$lib/Media/anime'; export let user: AniListAuthorisation; export let identity: UserIdentity; diff --git a/src/lib/List/Due/MangaList.svelte b/src/lib/List/Due/MangaList.svelte index bc152e27..ad553639 100644 --- a/src/lib/List/Due/MangaList.svelte +++ b/src/lib/List/Due/MangaList.svelte @@ -2,7 +2,7 @@ import { mediaListCollection, Type, type Media } from '$lib/AniList/media'; import type { UserIdentity, AniListAuthorisation } from '$lib/AniList/identity'; import { onDestroy, onMount } from 'svelte'; - import { chapterCount } from '$lib/manga'; + import { chapterCount } from '$lib/Media/manga'; import manga from '../../../stores/manga'; import { chapterDatabase } from '$lib/chapterDatabase'; import settings from '../../../stores/settings'; diff --git a/src/lib/List/UpcomingAnimeList.svelte b/src/lib/List/UpcomingAnimeList.svelte index bb52b573..41ffcee3 100644 --- a/src/lib/List/UpcomingAnimeList.svelte +++ b/src/lib/List/UpcomingAnimeList.svelte @@ -7,7 +7,7 @@ import anime from '../../stores/anime'; import lastPruneTimes from '../../stores/lastPruneTimes'; import settings from '../../stores/settings'; - import { airingTime, cleanCache } from '$lib/anime'; + import { airingTime, cleanCache } from '$lib/Media/anime'; export let user: AniListAuthorisation; export let identity: UserIdentity; diff --git a/src/lib/List/WatchingAnimeList.svelte b/src/lib/List/WatchingAnimeList.svelte index 2c298488..f86ede7d 100644 --- a/src/lib/List/WatchingAnimeList.svelte +++ b/src/lib/List/WatchingAnimeList.svelte @@ -7,7 +7,7 @@ import anime from '../../stores/anime'; import lastPruneTimes from '../../stores/lastPruneTimes'; import settings from '../../stores/settings'; - import { cleanCache, totalEpisodes, updateMedia } from '$lib/anime'; + import { cleanCache, totalEpisodes, updateMedia } from '$lib/Media/anime'; export let user: AniListAuthorisation; export let identity: UserIdentity; diff --git a/src/lib/Media/anime.ts b/src/lib/Media/anime.ts new file mode 100644 index 00000000..0eed9121 --- /dev/null +++ b/src/lib/Media/anime.ts @@ -0,0 +1,67 @@ +import { get } from 'svelte/store'; +import anime from '../../stores/anime'; +import { mediaListCollection, type Media, Type } from '../AniList/media'; +import lastPruneTimes from '../../stores/lastPruneTimes'; +import type { AniListAuthorisation, UserIdentity } from '../AniList/identity'; + +export const cleanCache = (user: AniListAuthorisation, identity: UserIdentity) => { + return mediaListCollection( + user, + identity, + Type.Anime, + get(anime), + get(lastPruneTimes).anime, + true + ); +}; + +export const updateMedia = (id: number, progress: number | undefined, callback: () => void) => { + fetch(`/api/anilist-increment?id=${id}&progress=${(progress || 0) + 1}`).then(callback); +}; + +export const totalEpisodes = (anime: Media) => { + return anime.episodes === null ? '' : `/${anime.episodes}`; +}; + +export const airingTime = (anime: Media, upcoming = false) => { + const untilAiring = anime.nextAiringEpisode?.timeUntilAiring; + let timeFrame; + + if (untilAiring !== undefined) { + let minutes = untilAiring / 60; + + if (minutes >= 30) { + let hours = minutes / 60; + + if (hours >= 24) { + let weeks = Math.floor(Math.floor(hours / 24) / 7); + + if (weeks >= 1) { + weeks = Math.round(weeks); + + timeFrame = `${weeks} week${weeks === 1 ? '' : 's'}`; + } else { + const days = Math.round(Math.floor(hours / 24)); + + timeFrame = `${days} day${days === 1 ? '' : 's'}`; + } + } else { + hours = Math.round(hours); + + timeFrame = `${hours} hour${hours === 1 ? '' : 's'}`; + } + } else { + minutes = Math.round(minutes); + + timeFrame = `${minutes} minute${minutes === 1 ? '' : 's'}`; + } + + if (upcoming) { + return `${anime.nextAiringEpisode?.episode}${totalEpisodes(anime)} in ${timeFrame}`; + } else { + return `${anime.nextAiringEpisode?.episode} in ${timeFrame}`; + } + } + + return ''; +}; diff --git a/src/lib/Media/manga.ts b/src/lib/Media/manga.ts new file mode 100644 index 00000000..7150bf60 --- /dev/null +++ b/src/lib/Media/manga.ts @@ -0,0 +1,69 @@ +import { recentMediaActivities, type Media } from '$lib/AniList/media'; +import type { UserIdentity } from '../AniList/identity'; +import { chapterDatabase } from '../chapterDatabase'; + +export const chapterCount = async ( + identity: UserIdentity, + manga: Media, + preferActivity = false +): Promise => { + 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 () => { + const anilistData = await recentMediaActivities(identity, manga); + + await chapterDatabase.chapters.put({ + id: manga.id, + chapters: anilistData ? anilistData : -1 + }); + + return anilistData; + }; + + 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 ( + await fetch(`/api/mangadex/feed?id=${mangadexData['data'][0]['id']}`) + ).json(); + + if (lastChapterData['data'] === undefined || lastChapterData['data'].length === 0) { + return await tryRecentMediaActivities(); + } + + let lastChapter = lastChapterData['data'][0]['attributes']['chapter']; + + if ((manga.mediaListEntry || { progress: 0 }).progress > lastChapter) { + const anilistData = await recentMediaActivities(identity, manga); + + if (anilistData !== null && anilistData > lastChapter) { + lastChapter = anilistData; + } + } + + if (lastChapter == 0) { + lastChapter = -1; + } + + await chapterDatabase.chapters.put({ + id: manga.id, + chapters: Number(lastChapter) + }); + + return Number(lastChapter); +}; diff --git a/src/lib/anime.ts b/src/lib/anime.ts deleted file mode 100644 index aafc2560..00000000 --- a/src/lib/anime.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { get } from 'svelte/store'; -import anime from '../stores/anime'; -import { mediaListCollection, type Media, Type } from './AniList/media'; -import lastPruneTimes from '../stores/lastPruneTimes'; -import type { AniListAuthorisation, UserIdentity } from './AniList/identity'; - -export const cleanCache = (user: AniListAuthorisation, identity: UserIdentity) => { - return mediaListCollection( - user, - identity, - Type.Anime, - get(anime), - get(lastPruneTimes).anime, - true - ); -}; - -export const updateMedia = (id: number, progress: number | undefined, callback: () => void) => { - fetch(`/api/anilist-increment?id=${id}&progress=${(progress || 0) + 1}`).then(callback); -}; - -export const totalEpisodes = (anime: Media) => { - return anime.episodes === null ? '' : `/${anime.episodes}`; -}; - -export const airingTime = (anime: Media, upcoming = false) => { - const untilAiring = anime.nextAiringEpisode?.timeUntilAiring; - let timeFrame; - - if (untilAiring !== undefined) { - let minutes = untilAiring / 60; - - if (minutes >= 30) { - let hours = minutes / 60; - - if (hours >= 24) { - let weeks = Math.floor(Math.floor(hours / 24) / 7); - - if (weeks >= 1) { - weeks = Math.round(weeks); - - timeFrame = `${weeks} week${weeks === 1 ? '' : 's'}`; - } else { - const days = Math.round(Math.floor(hours / 24)); - - timeFrame = `${days} day${days === 1 ? '' : 's'}`; - } - } else { - hours = Math.round(hours); - - timeFrame = `${hours} hour${hours === 1 ? '' : 's'}`; - } - } else { - minutes = Math.round(minutes); - - timeFrame = `${minutes} minute${minutes === 1 ? '' : 's'}`; - } - - if (upcoming) { - return `${anime.nextAiringEpisode?.episode}${totalEpisodes(anime)} in ${timeFrame}`; - } else { - return `${anime.nextAiringEpisode?.episode} in ${timeFrame}`; - } - } - - return ''; -}; diff --git a/src/lib/manga.ts b/src/lib/manga.ts deleted file mode 100644 index 5c73aced..00000000 --- a/src/lib/manga.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { recentMediaActivities, type Media } from '$lib/AniList/media'; -import type { UserIdentity } from './AniList/identity'; -import { chapterDatabase } from './chapterDatabase'; - -export const chapterCount = async ( - identity: UserIdentity, - manga: Media, - preferActivity = false -): Promise => { - 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 () => { - const anilistData = await recentMediaActivities(identity, manga); - - await chapterDatabase.chapters.put({ - id: manga.id, - chapters: anilistData ? anilistData : -1 - }); - - return anilistData; - }; - - 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 ( - await fetch(`/api/mangadex/feed?id=${mangadexData['data'][0]['id']}`) - ).json(); - - if (lastChapterData['data'] === undefined || lastChapterData['data'].length === 0) { - return await tryRecentMediaActivities(); - } - - let lastChapter = lastChapterData['data'][0]['attributes']['chapter']; - - if ((manga.mediaListEntry || { progress: 0 }).progress > lastChapter) { - const anilistData = await recentMediaActivities(identity, manga); - - if (anilistData !== null && anilistData > lastChapter) { - lastChapter = anilistData; - } - } - - if (lastChapter == 0) { - lastChapter = -1; - } - - await chapterDatabase.chapters.put({ - id: manga.id, - chapters: Number(lastChapter) - }); - - return Number(lastChapter); -}; -- cgit v1.2.3