fix: improve hold to FF code

This commit is contained in:
ThaUnknown 2025-05-05 20:21:41 +02:00
parent e1dbf1bd66
commit d2335b1e15
No known key found for this signature in database
2 changed files with 13 additions and 4 deletions

View file

@ -1,6 +1,6 @@
{
"name": "ui",
"version": "6.1.15",
"version": "6.1.16",
"license": "BUSL-1.1",
"private": true,
"packageManager": "pnpm@9.14.4",

View file

@ -403,6 +403,8 @@
function seekBarKey (event: KeyboardEvent) {
// left right up down return preventdefault
if (['ArrowLeft', 'ArrowRight'].includes(event.key)) event.stopPropagation()
if (event.repeat) return
switch (event.key) {
case 'ArrowLeft':
seek(-Number($settings.playerSeek))
@ -577,26 +579,33 @@
function holdToFF (document: HTMLElement, type: 'key' | 'pointer') {
const ctrl = new AbortController()
let timeout = 0
let oldPlaybackRate = playbackRate
const startFF = () => {
timeout = setTimeout(() => {
paused = false
ff = true
oldPlaybackRate = playbackRate
playbackRate = 2
}, 1000)
}
const endFF = () => {
clearTimeout(timeout)
ff = false
playbackRate = 1
if (ff) {
ff = false
playbackRate = oldPlaybackRate
paused = true
}
}
document.addEventListener(type + 'down' as 'keydown' | 'pointerdown', (event) => {
if (isMiniplayer) return
if ('code' in event && (event.code !== 'Space' || event.repeat)) return
if ('pointerId' in event) document.setPointerCapture(event.pointerId)
startFF()
}, { signal: ctrl.signal })
document.addEventListener(type + 'up' as 'keydown' | 'pointerdown', (event) => {
document.addEventListener(type + 'up' as 'keyup' | 'pointerup', (event) => {
if (isMiniplayer) return
if ('code' in event && event.code !== 'Space') return
if ('pointerId' in event) document.releasePointerCapture(event.pointerId)
endFF()
}, { signal: ctrl.signal })