diff options
| -rw-r--r-- | public/js/slideshow.js | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/public/js/slideshow.js b/public/js/slideshow.js index 7df0955..b8e2a11 100644 --- a/public/js/slideshow.js +++ b/public/js/slideshow.js @@ -4,6 +4,17 @@ let ssIdx = 0; let ssTimer = null; let ssPlaying = true; let ssQueue = SS_ENTRIES.slice(); +let wakeLock = null; + +async function acquireWakeLock() { + if (!('wakeLock' in navigator) || document.hidden) return; + try { wakeLock = await navigator.wakeLock.request('screen'); } catch (_) {} +} + +function releaseWakeLock() { + wakeLock?.release(); + wakeLock = null; +} const img = document.getElementById('ss-img'); const vid = document.getElementById('ss-video'); @@ -87,7 +98,8 @@ function ssPrev() { function ssToggle() { ssPlaying = !ssPlaying; btn.textContent = ssPlaying ? '⏸ Pause' : '▶ Play'; - if (ssPlaying) ssSchedule(); else clearTimeout(ssTimer); + if (ssPlaying) { ssSchedule(); acquireWakeLock(); } + else { clearTimeout(ssTimer); releaseWakeLock(); } } // ── Shuffle ──────────────────────────────────────────────────────────────────── @@ -140,11 +152,13 @@ document.addEventListener('fullscreenchange', onFsChange); document.addEventListener('webkitfullscreenchange', onFsChange); // Pause timer while tab is hidden; reschedule fresh on return so no burst catch-up. +// Wake lock is auto-released by the browser on hide; re-acquire on return. document.addEventListener('visibilitychange', () => { if (document.hidden) { clearTimeout(ssTimer); } else if (ssPlaying) { ssSchedule(); + acquireWakeLock(); } }); @@ -190,6 +204,7 @@ if (ssParams.get('shuffle') === '1') { if (ssQueue.length > 0) { ssShow(0, true); ssSchedule(); + acquireWakeLock(); } // Browsers require a live user gesture for requestFullscreen — entering it |
