summaryrefslogtreecommitdiff
path: root/web/js/detach.js
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-06 08:46:31 +0300
committerPaul Buetow <paul@buetow.org>2026-05-06 08:46:31 +0300
commit728ef661402c57e44e1035c311341cf8c5f11922 (patch)
treea651e2284de9cfc78ad305acbda87294990c2642 /web/js/detach.js
parent30ad6a0416c2a1fec58ddc6f4af727af9518f73c (diff)
Add PgUp/PgDn 10% seek in fullscreen mode
Diffstat (limited to 'web/js/detach.js')
-rw-r--r--web/js/detach.js13
1 files changed, 13 insertions, 0 deletions
diff --git a/web/js/detach.js b/web/js/detach.js
index 3b48122..b1dfd87 100644
--- a/web/js/detach.js
+++ b/web/js/detach.js
@@ -145,6 +145,8 @@ function handleCommand(payload) {
el.play().catch(() => {});
} else if (action === 'seek-relative') {
seekRelative(Number(payload.seconds || 0));
+ } else if (action === 'seek-percent') {
+ seekPercent(Number(payload.percent || 0));
}
}
@@ -164,6 +166,17 @@ function seekRelative(seconds) {
sendState();
}
+function seekPercent(percent) {
+ const el = mediaElement();
+ if (!currentMedia || !el || !isFinite(percent)) return;
+ const dur = (el.duration && isFinite(el.duration) && el.duration > 0) ? el.duration : (currentMedia?.duration || 0);
+ if (!dur) return;
+ const upper = el.duration && isFinite(el.duration) ? el.duration : Infinity;
+ el.currentTime = Math.max(0, Math.min(upper, (el.currentTime || 0) + dur * percent));
+ lastKnownPosition = el.currentTime || 0;
+ sendState();
+}
+
function toggleFullscreen() {
const player = document.getElementById('player');
if (!player) return;