From cd2e91f5e15a9080160ba4b9b2ca6ce8a978fb0d Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Sun, 27 Apr 2025 09:30:19 -0500 Subject: [PATCH] Check for meta key on all shortcuts --- src/app/AppViewSwitcher.tsx | 22 +++--- src/photo/PhotoPrevNextActions.tsx | 107 +++++++++++++++-------------- 2 files changed, 68 insertions(+), 61 deletions(-) diff --git a/src/app/AppViewSwitcher.tsx b/src/app/AppViewSwitcher.tsx index 3ce01e24..dc0d9ddb 100644 --- a/src/app/AppViewSwitcher.tsx +++ b/src/app/AppViewSwitcher.tsx @@ -38,16 +38,18 @@ export default function AppViewSwitcher({ const refHrefGrid = useRef(null); const onKeyDown = useCallback((e: KeyboardEvent) => { - switch (e.key.toLocaleUpperCase()) { - case KEY_COMMANDS.feed: - if (pathname !== PATH_FEED_INFERRED) { refHrefFeed.current?.click(); } - break; - case KEY_COMMANDS.grid: - if (pathname !== PATH_GRID_INFERRED) { refHrefGrid.current?.click(); } - break; - case KEY_COMMANDS.admin: - if (isUserSignedIn) { setIsAdminMenuOpen(true); } - break; + if (!e.metaKey) { + switch (e.key.toLocaleUpperCase()) { + case KEY_COMMANDS.feed: + if (pathname !== PATH_FEED_INFERRED) { refHrefFeed.current?.click(); } + break; + case KEY_COMMANDS.grid: + if (pathname !== PATH_GRID_INFERRED) { refHrefGrid.current?.click(); } + break; + case KEY_COMMANDS.admin: + if (isUserSignedIn) { setIsAdminMenuOpen(true); } + break; + } } }, [pathname, isUserSignedIn]); useKeydownHandler({ onKeyDown }); diff --git a/src/photo/PhotoPrevNextActions.tsx b/src/photo/PhotoPrevNextActions.tsx index b471d999..3f5bb5c4 100644 --- a/src/photo/PhotoPrevNextActions.tsx +++ b/src/photo/PhotoPrevNextActions.tsx @@ -103,58 +103,63 @@ export default function PhotoPrevNextActions({ : undefined; const onKeyDown = useCallback((e: KeyboardEvent) => { - switch (e.key.toUpperCase()) { - // Public commands - case KEY_COMMANDS.prev[0]: - case KEY_COMMANDS.prev[1]: - if (pathPrevious) { - setNextPhotoAnimation?.(ANIMATION_RIGHT); - refPrevious.current?.click(); + if (e.metaKey) { + switch (e.key.toUpperCase()) { + case KEY_COMMANDS.delete[1]: + if (isUserSignedIn) { + deletePhoto(); + } + break; } - break; - case KEY_COMMANDS.next[0]: - case KEY_COMMANDS.next[1]: - if (pathNext) { - setNextPhotoAnimation?.(ANIMATION_LEFT); - refNext.current?.click(); - } - break; - // Admin commands - case KEY_COMMANDS.edit: - if (isUserSignedIn) { - navigateToPhotoEdit(); - } - break; - case KEY_COMMANDS.favorite: - if (isUserSignedIn && photo && !isPhotoFav(photo)) { - favoritePhoto(); - } - break; - case KEY_COMMANDS.unfavorite: - if (isUserSignedIn && photo && isPhotoFav(photo)) { - unfavoritePhoto(); - } - break; - case KEY_COMMANDS.download: - if ( - (isUserSignedIn || ALLOW_PUBLIC_DOWNLOADS) && - downloadUrl && - downloadFileName - ) { - downloadFileFromBrowser(downloadUrl, downloadFileName); - } - break; - case KEY_COMMANDS.sync: - if (isUserSignedIn) { - syncPhoto(); - } - break; - case KEY_COMMANDS.delete[1]: - if (e.metaKey && isUserSignedIn) { - deletePhoto(); - } - break; - }; + } else { + switch (e.key.toUpperCase()) { + // Public commands + case KEY_COMMANDS.prev[0]: + case KEY_COMMANDS.prev[1]: + if (pathPrevious) { + setNextPhotoAnimation?.(ANIMATION_RIGHT); + refPrevious.current?.click(); + } + break; + case KEY_COMMANDS.next[0]: + case KEY_COMMANDS.next[1]: + if (pathNext) { + setNextPhotoAnimation?.(ANIMATION_LEFT); + refNext.current?.click(); + } + break; + // Admin commands + case KEY_COMMANDS.edit: + if (isUserSignedIn) { + navigateToPhotoEdit(); + } + break; + case KEY_COMMANDS.favorite: + if (isUserSignedIn && photo && !isPhotoFav(photo)) { + favoritePhoto(); + } + break; + case KEY_COMMANDS.unfavorite: + if (isUserSignedIn && photo && isPhotoFav(photo)) { + unfavoritePhoto(); + } + break; + case KEY_COMMANDS.download: + if ( + (isUserSignedIn || ALLOW_PUBLIC_DOWNLOADS) && + downloadUrl && + downloadFileName + ) { + downloadFileFromBrowser(downloadUrl, downloadFileName); + } + break; + case KEY_COMMANDS.sync: + if (isUserSignedIn) { + syncPhoto(); + } + break; + }; + } }, [ setNextPhotoAnimation, pathPrevious,