diff --git a/css/player-base.js b/css/player-base.js index 03b85fc9..8ebaa05a 100644 --- a/css/player-base.js +++ b/css/player-base.js @@ -3,387 +3,219 @@ var _yt_player = videojs; var versionclient = "youtube.player.web_20250917_22_RC00" -document.addEventListener("DOMContentLoaded", () => { +document.addEventListener("DOMContentLoaded", () => { // video.js 8 init - source can be seen in https://poketube.fun/static/vjs.min.js or the vjs.min.js file - const video = videojs('video', { + const video = videojs("video", { controls: true, autoplay: false, - preload: 'auto', + preload: "auto", errorDisplay: false, }); - // todo : remove this code lol - const qs = new URLSearchParams(window.location.search); + const qs = new URLSearchParams(location.search); const qua = qs.get("quality") || ""; - const vidKey = qs.get('v'); + const vidKey = qs.get("v"); try { localStorage.setItem(`progress-${vidKey}`, 0); } catch {} - // raw media elements - const videoEl = document.getElementById('video'); - const audio = document.getElementById('aud'); - const audioEl = document.getElementById('aud'); - let volGuard = false; + // raw elements + const videoEl = document.getElementById("video"); + const audioEl = document.getElementById("aud"); + const errorBox = document.getElementById("loopedIndicator"); - // FIX: ensure inline playback hint for iOS/Safari - try { videoEl.setAttribute('playsinline', ''); videoEl.setAttribute('webkit-playsinline', ''); } catch {} + // inline playback hints + try { videoEl.setAttribute("playsinline", ""); videoEl.setAttribute("webkit-playsinline", ""); } catch {} - // global anti-ping-pong guard - let syncing = false; // prevents normal ping-pong - let restarting = false; // prevents loop-end ping-pong - - // FIX: explicit loop-state variables - let desiredLoop = - !!videoEl.loop || - qs.get("loop") === "1" || - qs.get("loop") === "true" || - window.forceLoop === true; - - // FIX: tracks the short window *during* a loop restart - let suppressEndedUntil = 0; - - // FIX: co-play tracking flags (true only when each element fires 'playing') - let vIsPlaying = false; - let aIsPlaying = false; - - // remember mute states for temporary autoplay retries - let prevVideoMuted = false; - let prevAudioMuted = false; - let pendingUnmute = false; - - // turn OFF native loop so 'ended' fires and we control both tracks together - try { videoEl.loop = false; videoEl.removeAttribute?.('loop'); } catch {} - try { audio.loop = false; audio.removeAttribute?.('loop'); } catch {} - - // If someone toggles the