fix: hold to FF pointer cancel

This commit is contained in:
ThaUnknown 2025-07-20 02:42:13 +02:00
parent ad4ed78b76
commit 71d91d2a8e
No known key found for this signature in database
2 changed files with 23 additions and 6 deletions

View file

@ -1,6 +1,6 @@
{ {
"name": "ui", "name": "ui",
"version": "6.4.68", "version": "6.4.69",
"license": "BUSL-1.1", "license": "BUSL-1.1",
"private": true, "private": true,
"packageManager": "pnpm@9.15.5", "packageManager": "pnpm@9.15.5",

View file

@ -154,10 +154,10 @@
}) })
function checkAudio () { function checkAudio () {
if (video.audioTracks) { if ('audioTracks' in HTMLVideoElement.prototype && video.audioTracks) {
if (!video.audioTracks.length) { if (!video.audioTracks.length) {
toast.error('Audio Codec Unsupported', { toast.error('Audio Codec Unsupported', {
description: "This torrent's audio codec is not supported, try a different release by disabling Autoplay Torrents in RSS settings." description: "This torrent's audio codec is not supported, try a different release by disabling Autoplay Torrents in Torrent settings. You can also use external players like MPV."
}) })
} else if (video.audioTracks.length > 1) { } else if (video.audioTracks.length > 1) {
const preferredTrack = [...video.audioTracks].find(({ language }) => language === $settings.audioLanguage) const preferredTrack = [...video.audioTracks].find(({ language }) => language === $settings.audioLanguage)
@ -166,6 +166,15 @@
const japaneseTrack = [...video.audioTracks].find(({ language }) => language === 'jpn') const japaneseTrack = [...video.audioTracks].find(({ language }) => language === 'jpn')
if (japaneseTrack) return selectAudio(japaneseTrack.id) if (japaneseTrack) return selectAudio(japaneseTrack.id)
} }
} else {
video.requestVideoFrameCallback(() => {
// using capturestream.getAudioTracks() could work too
if ('webkitAudioDecodedByteCount' in video && video.webkitAudioDecodedByteCount === 0) {
toast.error('Audio Codec Unsupported', {
description: "This torrent's audio codec is not supported, try a different release by disabling Autoplay Torrents in Torrent settings. You can also use external players like MPV."
})
}
})
} }
} }
function selectAudio (id: string) { function selectAudio (id: string) {
@ -691,6 +700,7 @@
let timeout = 0 let timeout = 0
let oldPlaybackRate = playbackRate let oldPlaybackRate = playbackRate
const startFF = () => { const startFF = () => {
clearTimeout(timeout)
timeout = setTimeout(() => { timeout = setTimeout(() => {
paused = false paused = false
fastForwarding = true fastForwarding = true
@ -706,20 +716,27 @@
paused = true paused = true
} }
} }
document.addEventListener(type + 'down' as 'keydown' | 'pointerdown', (event) => { document.addEventListener(type + 'down' as 'keydown' | 'pointerdown', event => {
if (isMiniplayer) return if (isMiniplayer) return
if ('code' in event && (event.code !== 'Space')) return if ('code' in event && (event.code !== 'Space')) return
if ('button' in event && event.button !== 0) return if ('button' in event && event.button !== 0) return
if ('pointerId' in event) document.setPointerCapture(event.pointerId) if ('pointerId' in event) {
document.setPointerCapture(event.pointerId)
}
startFF() startFF()
}, { signal: ctrl.signal }) }, { signal: ctrl.signal })
document.addEventListener(type + 'up' as 'keyup' | 'pointerup', (event) => { document.addEventListener(type + 'up' as 'keyup' | 'pointerup', event => {
if (isMiniplayer) return if (isMiniplayer) return
if ('code' in event && event.code !== 'Space') return if ('code' in event && event.code !== 'Space') return
if ('pointerId' in event) document.releasePointerCapture(event.pointerId) if ('pointerId' in event) document.releasePointerCapture(event.pointerId)
endFF() endFF()
}, { signal: ctrl.signal }) }, { signal: ctrl.signal })
document.addEventListener('pointercancel', event => {
document.releasePointerCapture(event.pointerId)
endFF()
}, { signal: ctrl.signal })
return { destroy: () => ctrl.abort() } return { destroy: () => ctrl.abort() }
} }