From 6268d23d12198ba2a0259261d333b2133aaca0da Mon Sep 17 00:00:00 2001 From: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Date: Thu, 4 Jun 2026 18:51:16 +0200 Subject: [PATCH] fix: restore video play/plause shortcut (#28837) --- .../asset-viewer/VideoNativeViewer.svelte | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/web/src/lib/components/asset-viewer/VideoNativeViewer.svelte b/web/src/lib/components/asset-viewer/VideoNativeViewer.svelte index 1462fd4a92..d218b512b6 100644 --- a/web/src/lib/components/asset-viewer/VideoNativeViewer.svelte +++ b/web/src/lib/components/asset-viewer/VideoNativeViewer.svelte @@ -4,10 +4,12 @@ import { assetViewerFadeDuration } from '$lib/constants'; import { assetViewerManager } from '$lib/managers/asset-viewer-manager.svelte'; import { castManager } from '$lib/managers/cast-manager.svelte'; + import { featureFlagsManager } from '$lib/managers/feature-flags-manager.svelte'; + import { mediaCapabilitiesManager } from '$lib/managers/media-capabilities-manager.svelte'; import { autoPlayVideo, lang, loopVideo as loopVideoPreference } from '$lib/stores/preferences.store'; import { getAssetHlsSessionUrl, getAssetHlsUrl, getAssetMediaUrl, getAssetPlaybackUrl } from '$lib/utils'; import { AssetMediaSize, type AssetResponseDto } from '@immich/sdk'; - import { Icon, LoadingSpinner } from '@immich/ui'; + import { Icon, LoadingSpinner, shortcuts } from '@immich/ui'; import { mdiCheck, mdiChevronLeft, @@ -21,9 +23,9 @@ mdiVolumeMedium, mdiVolumeMute, } from '@mdi/js'; - import Hls, { AbrController, Events, type FragLoadedData, type FragLoadingData, type HlsConfig } from 'hls.js'; import 'hls-video-element'; import type HlsVideoElement from 'hls-video-element'; + import Hls, { AbrController, Events, type FragLoadedData, type FragLoadingData, type HlsConfig } from 'hls.js'; import 'media-chrome/media-control-bar'; import 'media-chrome/media-controller'; import 'media-chrome/media-fullscreen-button'; @@ -31,7 +33,6 @@ import 'media-chrome/media-play-button'; import 'media-chrome/media-playback-rate-button'; import 'media-chrome/media-time-display'; - import './immich-time-range'; import 'media-chrome/media-volume-range'; import 'media-chrome/menu/media-playback-rate-menu'; import 'media-chrome/menu/media-rendition-menu'; @@ -42,8 +43,7 @@ import { useSwipe, type SwipeCustomEvent } from 'svelte-gestures'; import { t } from 'svelte-i18n'; import { fade } from 'svelte/transition'; - import { featureFlagsManager } from '$lib/managers/feature-flags-manager.svelte'; - import { mediaCapabilitiesManager } from '$lib/managers/media-capabilities-manager.svelte'; + import './immich-time-range'; interface Props { asset: AssetResponseDto; @@ -318,6 +318,15 @@ const onSeeking = (event: Event) => event.currentTarget?.dispatchEvent(new Event('timeupdate')); + (videoPlayer?.paused ? videoPlayer?.play() : videoPlayer?.pause()), + }, + ]} +/> + {#if showVideo}