aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-11-22 23:59:39 -0800
committerFuwn <[email protected]>2023-11-22 23:59:39 -0800
commit0bc71a759ebf50399b69f852db51fc19e3377984 (patch)
treeff195aafc9bb4e893b19e8fdb150807e0f563c62 /src/lib
parentfix(settings): no default livechart (diff)
downloaddue.moe-0bc71a759ebf50399b69f852db51fc19e3377984.tar.xz
due.moe-0bc71a759ebf50399b69f852db51fc19e3377984.zip
fix(anime): remove time desync on outdated caches
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/AniList/media.ts4
-rw-r--r--src/lib/List/Anime/DueAnimeList.svelte5
-rw-r--r--src/lib/List/Anime/UpcomingAnimeList.svelte3
-rw-r--r--src/lib/Media/anime.ts5
4 files changed, 7 insertions, 10 deletions
diff --git a/src/lib/AniList/media.ts b/src/lib/AniList/media.ts
index 1ae33f7c..2898b3df 100644
--- a/src/lib/AniList/media.ts
+++ b/src/lib/AniList/media.ts
@@ -36,7 +36,7 @@ export interface Media {
};
nextAiringEpisode?: {
episode: number;
- timeUntilAiring?: number;
+ airingAt?: number;
};
mediaListEntry?: {
progress: number;
@@ -94,7 +94,7 @@ const collectionQueryTemplate = (type: Type, userId: number, includeCompleted: b
media {
id status type episodes chapters format duration
title { romaji english native }
- nextAiringEpisode { episode timeUntilAiring }
+ nextAiringEpisode { episode airingAt }
mediaListEntry {
progress progressVolumes status repeat
score(format: POINT_100) startedAt { year } completedAt { year }
diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte
index 951c2df5..d55ea5b1 100644
--- a/src/lib/List/Anime/DueAnimeList.svelte
+++ b/src/lib/List/Anime/DueAnimeList.svelte
@@ -78,10 +78,7 @@
return difference(a) - difference(b);
} else {
- return (
- (a.nextAiringEpisode?.timeUntilAiring || 9999) -
- (b.nextAiringEpisode?.timeUntilAiring || 9999)
- );
+ return (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999);
}
});
diff --git a/src/lib/List/Anime/UpcomingAnimeList.svelte b/src/lib/List/Anime/UpcomingAnimeList.svelte
index 2b1d8a4b..fef79711 100644
--- a/src/lib/List/Anime/UpcomingAnimeList.svelte
+++ b/src/lib/List/Anime/UpcomingAnimeList.svelte
@@ -54,8 +54,7 @@
upcomingAnime.sort(
(a: Media, b: Media) =>
- (a.nextAiringEpisode?.timeUntilAiring || 9999) -
- (b.nextAiringEpisode?.timeUntilAiring || 9999)
+ (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999)
);
if (!endTime) endTime = performance.now() - startTime;
diff --git a/src/lib/Media/anime.ts b/src/lib/Media/anime.ts
index 8fecbd6c..baef7e14 100644
--- a/src/lib/Media/anime.ts
+++ b/src/lib/Media/anime.ts
@@ -24,9 +24,10 @@ export const totalEpisodes = (anime: Media) => {
};
export const airingTime = (anime: Media, upcoming = false) => {
- const untilAiring = anime.nextAiringEpisode?.timeUntilAiring;
+ const airingAt = anime.nextAiringEpisode?.airingAt;
+ const untilAiring = airingAt ? Math.round((airingAt - Date.now() / 1000) * 100) / 100 : undefined;
let timeFrame;
- const time = new Date(Date.now() + (untilAiring || 0) * 1000).toLocaleTimeString([], {
+ const time = new Date(airingAt ? airingAt * 1000 : 0).toLocaleTimeString([], {
hour: 'numeric',
minute: '2-digit'
});