summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--public/js/slideshow.js17
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