aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-02-03 08:44:49 -0800
committerFuwn <[email protected]>2024-02-03 08:44:49 -0800
commit92dc2b4904113dc1926343317e2da5a08d86d049 (patch)
tree4fc7c635f54db0b4f29c25eb8290b213115819ba /src/lib
parentfeat(upcoming): inject airing time for order (diff)
downloaddue.moe-92dc2b4904113dc1926343317e2da5a08d86d049.tar.xz
due.moe-92dc2b4904113dc1926343317e2da5a08d86d049.zip
fix(anime): unaired subtitle episode
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte6
-rw-r--r--src/lib/List/Anime/DueAnimeList.svelte4
-rw-r--r--src/lib/List/Anime/UpcomingAnimeList.svelte4
-rw-r--r--src/lib/Media/Anime/Airing/AiringTime.svelte8
-rw-r--r--src/lib/Media/Anime/Airing/Subtitled/match.ts9
5 files changed, 14 insertions, 17 deletions
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte
index a4839190..29ca0e67 100644
--- a/src/lib/List/Anime/CleanAnimeList.svelte
+++ b/src/lib/List/Anime/CleanAnimeList.svelte
@@ -120,11 +120,7 @@
{#if !completed}
[{anime.nextAiringEpisode?.episode === -1
? '?'
- : (anime.nextAiringEpisode?.episode || 1) -
- ((anime.nextAiringEpisode?.airingAt || 999) <
- (anime.nextAiringEpisode?.nativeAiringAt || 0)
- ? 2
- : 1)}]
+ : (anime.nextAiringEpisode?.episode || 1) - 1}]
<br />
<AiringTime originalAnime={anime} {subsPlease} />
{/if}
diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte
index ce946ff4..90871a82 100644
--- a/src/lib/List/Anime/DueAnimeList.svelte
+++ b/src/lib/List/Anime/DueAnimeList.svelte
@@ -45,6 +45,7 @@
if (anime === undefined) return [];
let dueAnime = anime
+ .map((media) => injectAiringTime(media, subsPlease))
.filter(
// Releasing media
(media: Media) =>
@@ -65,8 +66,7 @@
media.nextAiringEpisode = { episode: -1 };
return media;
- })
- .map((media) => injectAiringTime(media, subsPlease));
+ });
if (!displayUnresolved)
dueAnime = dueAnime.filter((media: Media) => media.nextAiringEpisode?.episode !== -1);
diff --git a/src/lib/List/Anime/UpcomingAnimeList.svelte b/src/lib/List/Anime/UpcomingAnimeList.svelte
index 13cae14a..012631f7 100644
--- a/src/lib/List/Anime/UpcomingAnimeList.svelte
+++ b/src/lib/List/Anime/UpcomingAnimeList.svelte
@@ -38,6 +38,7 @@
const filterAnime = (status: 'RELEASING' | 'NOT_YET_RELEASED') =>
anime
.filter((media: Media) => media.status === status && media.nextAiringEpisode !== null)
+ .map((media) => injectAiringTime(media, subsPlease))
.filter(
(media: Media) =>
// Outdated media
@@ -54,8 +55,7 @@
media.nextAiringEpisode = { episode: -1 };
return media;
- })
- .map((media) => injectAiringTime(media, subsPlease));
+ });
let upcomingAnime = filterAnime(plannedOnly ? 'NOT_YET_RELEASED' : 'RELEASING');
if (!displayUnresolved)
diff --git a/src/lib/Media/Anime/Airing/AiringTime.svelte b/src/lib/Media/Anime/Airing/AiringTime.svelte
index 802b766b..3fe8df2e 100644
--- a/src/lib/Media/Anime/Airing/AiringTime.svelte
+++ b/src/lib/Media/Anime/Airing/AiringTime.svelte
@@ -15,7 +15,7 @@
let opacity = 100;
let timeFrame = '';
let time = '';
- let nextEpisode = 0;
+ let nextEpisode = anime.nextAiringEpisode?.episode || 0;
let few = true;
let dateString = '';
@@ -100,12 +100,6 @@
}
opacity = Math.max(50, 100 - (untilAiring / 60 / 60 / 24 / 7) * 50);
- nextEpisode =
- anime.nextAiringEpisode?.nativeAiringAt &&
- !upcoming &&
- anime.nextAiringEpisode.nativeAiringAt < Date.now() / 1000 + 1 * 6 * 60 * 60
- ? anime.nextAiringEpisode.episode - 1
- : anime.nextAiringEpisode?.episode || 0;
dateString =
new Date(airingAt ? airingAt * 1000 : 0).toLocaleDateString([], {
weekday: 'long',
diff --git a/src/lib/Media/Anime/Airing/Subtitled/match.ts b/src/lib/Media/Anime/Airing/Subtitled/match.ts
index 26782a8b..82dc5e7d 100644
--- a/src/lib/Media/Anime/Airing/Subtitled/match.ts
+++ b/src/lib/Media/Anime/Airing/Subtitled/match.ts
@@ -106,7 +106,7 @@ export const injectAiringTime = (anime: Media, subsPlease: SubsPlease | null) =>
const nativeTime = new Date(airingAt ? airingAt * 1000 : 0);
let untilAiring;
let time = new Date(airingAt ? airingAt * 1000 : 0);
- const nextEpisode = anime.nextAiringEpisode?.episode || 0;
+ let nextEpisode = anime.nextAiringEpisode?.episode || 0;
if (
!(
@@ -140,6 +140,13 @@ export const injectAiringTime = (anime: Media, subsPlease: SubsPlease | null) =>
}
}
+ if (
+ airingAt &&
+ nativeTime.getTime() !== time.getTime() &&
+ nativeTime.getTime() - time.getTime() > 24 * 60 * 60 * 1000
+ )
+ nextEpisode -= 1;
+
return {
...anime,
nextAiringEpisode: {