diff --git a/svelte/src/file_viewer/viewers/FilePreview.svelte b/svelte/src/file_viewer/viewers/FilePreview.svelte index b666c18..239adb3 100644 --- a/svelte/src/file_viewer/viewers/FilePreview.svelte +++ b/svelte/src/file_viewer/viewers/FilePreview.svelte @@ -32,8 +32,6 @@ export const set_file = async file => { file.availability === "ip_download_limited_captcha_required" ) { viewer_type = "rate_limit" - } else if (!premium_download && $stats.limits.transfer_limit_used > $stats.limits.transfer_limit) { - viewer_type = "slow_down" } else { viewer_type = file_type(file) } @@ -67,7 +65,7 @@ export const seek = delta => { {:else if viewer_type === "abuse"} -{:else if viewer_type === "slow_down"} +{:else if !premium_download && $stats.limits.transfer_limit_used > $stats.limits.transfer_limit} { } const fullscreen = () => { - player.requestFullscreen() + if (document.fullscreenElement === null) { + player.requestFullscreen() + } else { + document.exitFullscreen() + } } const keypress = e => { @@ -104,6 +108,14 @@ const keypress = e => { fullscreen() } } +const video_keydown = e => { + if (e.key === " ") { + // Prevent spacebar from pausing playback in Chromium. This conflicts + // with our own global key handler, causing the video to immediately + // pause again after unpausing. + e.stopPropagation() + } +} @@ -135,6 +147,7 @@ const keypress = e => { on:pause={() => playing = false } on:play={() => playing = true } on:ended={() => dispatch("next", {})} + on:keydown={video_keydown} > diff --git a/svelte/src/filesystem/viewers/Video.svelte b/svelte/src/filesystem/viewers/Video.svelte index 845969b..6bc531d 100644 --- a/svelte/src/filesystem/viewers/Video.svelte +++ b/svelte/src/filesystem/viewers/Video.svelte @@ -71,8 +71,22 @@ const mute = () => { } const fullscreen = () => { - player.requestFullscreen() + if (document.fullscreenElement === null) { + player.requestFullscreen() + } else { + document.exitFullscreen() + } } + +const video_keydown = e => { + if (e.key === " ") { + // Prevent spacebar from pausing playback in Chromium. This conflicts + // with our own global key handler, causing the video to immediately + // pause again after unpausing. + e.stopPropagation() + } +} +
@@ -101,6 +115,7 @@ const fullscreen = () => { on:pause={() => playing = false } on:play={() => playing = true } on:ended={() => dispatch("open_sibling", 1)} + on:keydown={video_keydown} >