diff --git a/websites/0-9/404Anime/metadata.json b/websites/0-9/404Anime/metadata.json index 2a53e5282ebe..22e48ddd3e31 100644 --- a/websites/0-9/404Anime/metadata.json +++ b/websites/0-9/404Anime/metadata.json @@ -11,7 +11,7 @@ }, "url": "404anime.ca", "regExp": "^https?[:][/][/]404anime[.]ca[/]", - "version": "1.0.1", + "version": "1.0.2", "logo": "https://cdn.rcd.gg/PreMiD/websites/0-9/404Anime/assets/logo.png", "thumbnail": "https://cdn.rcd.gg/PreMiD/websites/0-9/404Anime/assets/thumbnail.png", "color": "#facc15", diff --git a/websites/0-9/404Anime/presence.ts b/websites/0-9/404Anime/presence.ts index e353640024dc..8d83b25fef3f 100644 --- a/websites/0-9/404Anime/presence.ts +++ b/websites/0-9/404Anime/presence.ts @@ -31,19 +31,15 @@ function truncate(value: string, max = 128): string { return value.length > max ? `${value.slice(0, max - 1)}...` : value } -function getVideoFallback(): Pick< +function getLivePlayback(): Pick< Anime404PremidPresence, 'currentTime' | 'duration' | 'paused' > { const video = document.querySelector('video') - if (!video) { - return { - currentTime: 0, - duration: 0, - paused: true, - } - } + // No video: contribute nothing, so the cached bridge values stand. + if (!video) + return {} return { currentTime: Number.isFinite(video.currentTime) ? video.currentTime : 0, @@ -52,7 +48,7 @@ function getVideoFallback(): Pick< } } -async function getBridgeData(): Promise { +async function fetchBridgeData(): Promise { if (supports(presence, 'execInPage')) { try { const data = await presence.execInPage({ @@ -79,6 +75,71 @@ async function getBridgeData(): Promise { } } +// Cached, and only re-read on a URL change or when the page rewrites +// ``. Position comes off the