diff --git a/web/src/lib/components/asset-viewer/asset-viewer.svelte b/web/src/lib/components/asset-viewer/asset-viewer.svelte index 209eb999fa..8199c76ec1 100644 --- a/web/src/lib/components/asset-viewer/asset-viewer.svelte +++ b/web/src/lib/components/asset-viewer/asset-viewer.svelte @@ -27,6 +27,7 @@ import CircleIconButton from '../elements/buttons/circle-icon-button.svelte'; import Close from 'svelte-material-icons/Close.svelte'; import ProgressBar, { ProgressBarStatus } from '../shared-components/progress-bar/progress-bar.svelte'; + import { disableShortcut } from '$lib/stores/shortcut.store'; export let assetStore: AssetStore | null = null; export let asset: AssetResponseDto; @@ -89,6 +90,10 @@ }; const handleKeyboardPress = (key: string, shiftKey: boolean) => { + if ($disableShortcut) { + return; + } + switch (key) { case 'a': case 'A': @@ -207,11 +212,13 @@ const openAlbumPicker = (shared: boolean) => { isShowAlbumPicker = true; + $disableShortcut = true; addToSharedAlbum = shared; }; const handleAddToNewAlbum = (event: CustomEvent) => { isShowAlbumPicker = false; + $disableShortcut = false; const { albumName }: { albumName: string } = event.detail; api.albumApi.createAlbum({ createAlbumDto: { albumName, assetIds: [asset.id] } }).then((response) => { @@ -222,6 +229,7 @@ const handleAddToAlbum = async (event: CustomEvent<{ album: AlbumResponseDto }>) => { isShowAlbumPicker = false; + $disableShortcut = false; const album = event.detail.album; await addAssetsToAlbum(album.id, [asset.id]); @@ -449,7 +457,10 @@ on:newAlbum={handleAddToNewAlbum} on:newSharedAlbum={handleAddToNewAlbum} on:album={handleAddToAlbum} - on:close={() => (isShowAlbumPicker = false)} + on:close={() => { + isShowAlbumPicker = false; + $disableShortcut = false; + }} /> {/if} diff --git a/web/src/lib/components/photos-page/actions/add-to-album.svelte b/web/src/lib/components/photos-page/actions/add-to-album.svelte index a205d83927..1fe1bdee59 100644 --- a/web/src/lib/components/photos-page/actions/add-to-album.svelte +++ b/web/src/lib/components/photos-page/actions/add-to-album.svelte @@ -10,6 +10,7 @@ import { AlbumResponseDto, api } from '@api'; import { getMenuContext } from '../asset-select-context-menu.svelte'; import { getAssetControlContext } from '../asset-select-control-bar.svelte'; + import { disableShortcut } from '$lib/stores/shortcut.store'; export let shared = false; let showAlbumPicker = false; @@ -19,11 +20,13 @@ const handleHideAlbumPicker = () => { showAlbumPicker = false; + $disableShortcut = false; closeMenu(); }; const handleAddToNewAlbum = (event: CustomEvent) => { showAlbumPicker = false; + $disableShortcut = false; const { albumName }: { albumName: string } = event.detail; const assetIds = Array.from(getAssets()).map((asset) => asset.id); @@ -43,6 +46,7 @@ const handleAddToAlbum = async (event: CustomEvent<{ album: AlbumResponseDto }>) => { showAlbumPicker = false; + $disableShortcut = false; const album = event.detail.album; const assetIds = Array.from(getAssets()).map((asset) => asset.id); await addAssetsToAlbum(album.id, assetIds); @@ -50,7 +54,13 @@ }; - (showAlbumPicker = true)} text={shared ? 'Add to Shared Album' : 'Add to Album'} /> + { + showAlbumPicker = true; + $disableShortcut = true; + }} + text={shared ? 'Add to Shared Album' : 'Add to Album'} +/> {#if showAlbumPicker} { - if ($isSearchEnabled) { + if ($isSearchEnabled || $disableShortcut) { return; } diff --git a/web/src/lib/stores/shortcut.store.ts b/web/src/lib/stores/shortcut.store.ts new file mode 100644 index 0000000000..29feaa8f9a --- /dev/null +++ b/web/src/lib/stores/shortcut.store.ts @@ -0,0 +1,3 @@ +import { writable } from 'svelte/store'; + +export const disableShortcut = writable(false); diff --git a/web/src/routes/(user)/albums/[albumId]/+page.svelte b/web/src/routes/(user)/albums/[albumId]/+page.svelte index 19da26d560..adaf72040a 100644 --- a/web/src/routes/(user)/albums/[albumId]/+page.svelte +++ b/web/src/routes/(user)/albums/[albumId]/+page.svelte @@ -45,6 +45,7 @@ import ShareVariantOutline from 'svelte-material-icons/ShareVariantOutline.svelte'; import type { PageData } from './$types'; import { clickOutside } from '$lib/utils/click-outside'; + import { disableShortcut } from '$lib/stores/shortcut.store'; export let data: PageData; @@ -276,6 +277,7 @@ album.description = description; isEditingDescription = false; + $disableShortcut = false; } catch (error) { handleError(error, 'Error updating album description'); } @@ -472,7 +474,10 @@ {#if isOwned || album.description}