aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Media/Anime/airing.ts52
1 files changed, 36 insertions, 16 deletions
diff --git a/src/lib/Media/Anime/airing.ts b/src/lib/Media/Anime/airing.ts
index e0cb9528..c7d4a4ea 100644
--- a/src/lib/Media/Anime/airing.ts
+++ b/src/lib/Media/Anime/airing.ts
@@ -59,18 +59,21 @@ const findClosestMatch = (times: Time[], titles: string[]) => {
return closestMatch as Time | null;
};
-export const airingTime = (anime: Media, subsPlease: SubsPlease | null, upcoming = false) => {
+export const injectAiringTime = (anime: Media, subsPlease: SubsPlease | null) => {
const airingAt = anime.nextAiringEpisode?.airingAt;
+ const nativeUntilAiring = airingAt
+ ? Math.round((airingAt - Date.now() / 1000) * 100) / 100
+ : undefined;
let untilAiring;
- let time = new Date(airingAt ? airingAt * 1000 : 0).toLocaleTimeString([], {
- hour12: !settings.get().display24HourTime,
- hour: 'numeric',
- minute: '2-digit'
- });
+ let time = new Date(airingAt ? airingAt * 1000 : 0);
- if (get(settings).displayNativeCountdown || !subsPlease) {
- untilAiring = airingAt ? Math.round((airingAt - Date.now() / 1000) * 100) / 100 : undefined;
- } else {
+ if (
+ !(
+ get(settings).displayNativeCountdown ||
+ !subsPlease ||
+ !(nativeUntilAiring !== undefined && nativeUntilAiring < 24 * 60 * 60)
+ )
+ ) {
const times: Time[] = [];
for (const [key, value] of Object.entries(subsPlease.schedule)) {
@@ -93,15 +96,32 @@ export const airingTime = (anime: Media, subsPlease: SubsPlease | null, upcoming
if (foundTime) {
untilAiring = secondsUntil((foundTime as Time).time, (foundTime as Time).day);
- time = new Date(Date.now() + untilAiring * 1000).toLocaleTimeString([], {
- hour12: !settings.get().display24HourTime,
- hour: 'numeric',
- minute: '2-digit'
- });
- } else
- untilAiring = airingAt ? Math.round((airingAt - Date.now() / 1000) * 100) / 100 : undefined;
+ time = new Date(Date.now() + untilAiring * 1000);
+ }
}
+ return {
+ ...anime,
+ nextAiringEpisode: {
+ ...anime.nextAiringEpisode,
+ airingAt: time.getTime() / 1000
+ }
+ } as Media;
+};
+
+export const airingTime = (
+ originalAnime: Media,
+ subsPlease: SubsPlease | null,
+ upcoming = false
+) => {
+ const anime = injectAiringTime(originalAnime, subsPlease);
+ const airingAt = anime.nextAiringEpisode?.airingAt;
+ const untilAiring = airingAt ? Math.round((airingAt - Date.now() / 1000) * 100) / 100 : undefined;
+ const time = new Date(airingAt ? airingAt * 1000 : 0).toLocaleTimeString([], {
+ hour12: !settings.get().display24HourTime,
+ hour: 'numeric',
+ minute: '2-digit'
+ });
let timeFrame;
let hours = null;