From 2d03f1f31bae7367f82e86e8e902bd910e720d27 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Wed, 21 May 2025 13:47:33 +0100 Subject: [PATCH] implement bookmark link copy --- .../web/src/app/bookmarks/-action-bar.tsx | 21 ++++++++++----- .../web/src/app/bookmarks/-bookmark-list.tsx | 19 ++++++++++++- packages/web/src/app/bookmarks/-store.tsx | 27 +++++++++++++------ 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/packages/web/src/app/bookmarks/-action-bar.tsx b/packages/web/src/app/bookmarks/-action-bar.tsx index dfdb724..5633921 100644 --- a/packages/web/src/app/bookmarks/-action-bar.tsx +++ b/packages/web/src/app/bookmarks/-action-bar.tsx @@ -26,6 +26,7 @@ function ActionBar({ function BookmarkListActionBar({ className }: { className?: string }) { const setActiveDialog = useBookmarkPageStore((state) => state.setActiveDialog) + const statusMessage = useBookmarkPageStore((state) => state.statusMessage) useMnemonics( { @@ -40,13 +41,19 @@ function BookmarkListActionBar({ className }: { className?: string }) { return ( - - - + {statusMessage ? ( +

{statusMessage}

+ ) : ( + <> + + + + + )}
) } diff --git a/packages/web/src/app/bookmarks/-bookmark-list.tsx b/packages/web/src/app/bookmarks/-bookmark-list.tsx index 0d56736..99578fc 100644 --- a/packages/web/src/app/bookmarks/-bookmark-list.tsx +++ b/packages/web/src/app/bookmarks/-bookmark-list.tsx @@ -15,6 +15,7 @@ enum BookmarkListItemAction { Open = "Open", Edit = "Edit", Delete = "Delete", + CopyLink = "CopyLink", } type SelectionChangeCallback = (bookmark: Bookmark) => void @@ -178,12 +179,24 @@ const _BookmarkList = memo(({ className }: { className?: string }) => { d: deleteItem, Enter: openItem, + + c: (event) => { + if (event.ctrlKey || event.metaKey) { + event.preventDefault() + copyBookmarkLink() + } + }, }, { ignore: useCallback(() => useBookmarkPageStore.getState().activeDialog !== ActiveDialog.None, []), }, ) + async function copyBookmarkLink() { + const { bookmarks, selectedIndex, onItemAction } = store.getState() + onItemAction(bookmarks[selectedIndex], BookmarkListItemAction.CopyLink) + } + function openItem() { const { bookmarks, selectedIndex, onItemAction } = store.getState() expandItem() @@ -261,6 +274,10 @@ const BookmarkListItem = memo( onItemAction(bookmark, BookmarkListItemAction.Delete) } + function copyItemLink() { + onItemAction(bookmark, BookmarkListItemAction.CopyLink) + } + return (
  • -