Check for meta key on all shortcuts

This commit is contained in:
Sam Becker 2025-04-27 09:30:19 -05:00
parent 866c9fb273
commit cd2e91f5e1
2 changed files with 68 additions and 61 deletions

View File

@ -38,16 +38,18 @@ export default function AppViewSwitcher({
const refHrefGrid = useRef<HTMLAnchorElement>(null); const refHrefGrid = useRef<HTMLAnchorElement>(null);
const onKeyDown = useCallback((e: KeyboardEvent) => { const onKeyDown = useCallback((e: KeyboardEvent) => {
switch (e.key.toLocaleUpperCase()) { if (!e.metaKey) {
case KEY_COMMANDS.feed: switch (e.key.toLocaleUpperCase()) {
if (pathname !== PATH_FEED_INFERRED) { refHrefFeed.current?.click(); } case KEY_COMMANDS.feed:
break; if (pathname !== PATH_FEED_INFERRED) { refHrefFeed.current?.click(); }
case KEY_COMMANDS.grid: break;
if (pathname !== PATH_GRID_INFERRED) { refHrefGrid.current?.click(); } case KEY_COMMANDS.grid:
break; if (pathname !== PATH_GRID_INFERRED) { refHrefGrid.current?.click(); }
case KEY_COMMANDS.admin: break;
if (isUserSignedIn) { setIsAdminMenuOpen(true); } case KEY_COMMANDS.admin:
break; if (isUserSignedIn) { setIsAdminMenuOpen(true); }
break;
}
} }
}, [pathname, isUserSignedIn]); }, [pathname, isUserSignedIn]);
useKeydownHandler({ onKeyDown }); useKeydownHandler({ onKeyDown });

View File

@ -103,58 +103,63 @@ export default function PhotoPrevNextActions({
: undefined; : undefined;
const onKeyDown = useCallback((e: KeyboardEvent) => { const onKeyDown = useCallback((e: KeyboardEvent) => {
switch (e.key.toUpperCase()) { if (e.metaKey) {
// Public commands switch (e.key.toUpperCase()) {
case KEY_COMMANDS.prev[0]: case KEY_COMMANDS.delete[1]:
case KEY_COMMANDS.prev[1]: if (isUserSignedIn) {
if (pathPrevious) { deletePhoto();
setNextPhotoAnimation?.(ANIMATION_RIGHT); }
refPrevious.current?.click(); break;
} }
break; } else {
case KEY_COMMANDS.next[0]: switch (e.key.toUpperCase()) {
case KEY_COMMANDS.next[1]: // Public commands
if (pathNext) { case KEY_COMMANDS.prev[0]:
setNextPhotoAnimation?.(ANIMATION_LEFT); case KEY_COMMANDS.prev[1]:
refNext.current?.click(); if (pathPrevious) {
} setNextPhotoAnimation?.(ANIMATION_RIGHT);
break; refPrevious.current?.click();
// Admin commands }
case KEY_COMMANDS.edit: break;
if (isUserSignedIn) { case KEY_COMMANDS.next[0]:
navigateToPhotoEdit(); case KEY_COMMANDS.next[1]:
} if (pathNext) {
break; setNextPhotoAnimation?.(ANIMATION_LEFT);
case KEY_COMMANDS.favorite: refNext.current?.click();
if (isUserSignedIn && photo && !isPhotoFav(photo)) { }
favoritePhoto(); break;
} // Admin commands
break; case KEY_COMMANDS.edit:
case KEY_COMMANDS.unfavorite: if (isUserSignedIn) {
if (isUserSignedIn && photo && isPhotoFav(photo)) { navigateToPhotoEdit();
unfavoritePhoto(); }
} break;
break; case KEY_COMMANDS.favorite:
case KEY_COMMANDS.download: if (isUserSignedIn && photo && !isPhotoFav(photo)) {
if ( favoritePhoto();
(isUserSignedIn || ALLOW_PUBLIC_DOWNLOADS) && }
downloadUrl && break;
downloadFileName case KEY_COMMANDS.unfavorite:
) { if (isUserSignedIn && photo && isPhotoFav(photo)) {
downloadFileFromBrowser(downloadUrl, downloadFileName); unfavoritePhoto();
} }
break; break;
case KEY_COMMANDS.sync: case KEY_COMMANDS.download:
if (isUserSignedIn) { if (
syncPhoto(); (isUserSignedIn || ALLOW_PUBLIC_DOWNLOADS) &&
} downloadUrl &&
break; downloadFileName
case KEY_COMMANDS.delete[1]: ) {
if (e.metaKey && isUserSignedIn) { downloadFileFromBrowser(downloadUrl, downloadFileName);
deletePhoto(); }
} break;
break; case KEY_COMMANDS.sync:
}; if (isUserSignedIn) {
syncPhoto();
}
break;
};
}
}, [ }, [
setNextPhotoAnimation, setNextPhotoAnimation,
pathPrevious, pathPrevious,