Skip to content

Commit 617df8c

Browse files
committed
add wake lock feature
1 parent ea50842 commit 617df8c

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

index.html

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@
157157

158158
const toggleGuideText = document.querySelector("#toggle-guide-text-setting > input");
159159
const toggleSessionTime = document.querySelector("#toggle-session-time-setting > input");
160+
const toggleWakelock = document.querySelector("#toggle-wakelock > input");
160161

161162
const guideTextContainer = document.getElementById("guide-text");
162163
const sessionTime = document.getElementById("session-time");
@@ -215,6 +216,37 @@
215216

216217
toggleGuideText.checked = refreshGuideVisibility();
217218

219+
let wakeLock = null;
220+
221+
async function setWakeLock(enabled) {
222+
if (enabled) {
223+
try {
224+
wakeLock = await navigator.wakeLock.request("screen");
225+
wakeLock.addEventListener("release", () => {
226+
wakeLock = null;
227+
});
228+
} catch (e) {}
229+
} else if (wakeLock) {
230+
await wakeLock.release();
231+
wakeLock = null;
232+
}
233+
}
234+
235+
const wakelockEnabled = localStorage.getItem("wake_lock") !== "false";
236+
toggleWakelock.checked = wakelockEnabled;
237+
setWakeLock(wakelockEnabled);
238+
239+
toggleWakelock.addEventListener("change", () => {
240+
localStorage.setItem("wake_lock", toggleWakelock.checked);
241+
setWakeLock(toggleWakelock.checked);
242+
});
243+
244+
document.addEventListener("visibilitychange", () => {
245+
if (document.visibilityState === "visible" && localStorage.getItem("wake_lock") !== "false") {
246+
setWakeLock(true);
247+
}
248+
});
249+
218250
function refreshSessionVisibility(delay) {
219251
if (sessionRevealTimeout) clearTimeout(sessionRevealTimeout);
220252
sessionTime.style.transitionProperty = "initial";
@@ -905,6 +937,13 @@
905937
</label>
906938
<div>Display breathing instructions</div>
907939
</div>
940+
<div class="setting">
941+
<label id="toggle-wakelock" class="switch" role="button" aria-label="Toggle wake lock">
942+
<input type="checkbox" />
943+
<span class="slider"></span>
944+
</label>
945+
<div>Prevent screen dimming</div>
946+
</div>
908947
</div>
909948
<h1>
910949
<details>

0 commit comments

Comments
 (0)