From 1d21f493c3b28e823d1e0d57868942e9e6839745 Mon Sep 17 00:00:00 2001 From: akadroid Date: Thu, 26 Sep 2024 17:08:24 -0700 Subject: [PATCH] Fix external player anilist completion --- common/views/Player/Player.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/views/Player/Player.svelte b/common/views/Player/Player.svelte index a8674b4c..e965a863 100644 --- a/common/views/Player/Player.svelte +++ b/common/views/Player/Player.svelte @@ -71,6 +71,7 @@ let ended = false let volume = Number(localStorage.getItem('volume')) || 1 let playbackRate = 1 + let externalPlayerReady = false $: localStorage.setItem('volume', (volume || 0).toString()) $: safeduration = (isFinite(duration) ? duration : currentTime) || 0 @@ -185,6 +186,7 @@ const duration = current.media?.media?.duration client.removeEventListener('externalWatched', watchedListener) watchedListener = ({ detail }) => { + externalPlayerReady = true checkCompletionByTime(detail, duration) } client.on('externalWatched', watchedListener) @@ -959,10 +961,11 @@ function checkCompletionByTime (currentTime, safeduration) { const fromend = Math.max(180, safeduration / 10) - if (safeduration && currentTime && video?.readyState && safeduration - fromend < currentTime) { + if (safeduration && currentTime && (video?.readyState || externalPlayerReady) && safeduration - fromend < currentTime) { if (media?.media?.episodes || media?.media?.nextAiringEpisode?.episode) { if (media.media.episodes || media.media.nextAiringEpisode?.episode > media.episode) { completed = true + externalPlayerReady = false anilistClient.alEntry(media) } }