diff options
| author | kamtschatka <simon.schatka@gmx.at> | 2024-09-30 02:02:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-30 01:02:48 +0100 |
| commit | 8b69cddfb92b3b7548d3f90dbec1038c728ea5d9 (patch) | |
| tree | 7d6dcbdc6c40aac0c98dce48a573c560f2891a90 /apps/web/components/dashboard/BulkBookmarksAction.tsx | |
| parent | 5281531d6f4aab4605c407d5167dd8e44f237f0d (diff) | |
| download | karakeep-8b69cddfb92b3b7548d3f90dbec1038c728ea5d9.tar.zst | |
feature(web): Add ability to manually trigger full page archives. Fixes #398 (#418)
* [Feature Request] Ability to select what to "crawl full page archive" #398
Added the ability to start a full page crawl for links and also in bulk operations
added the ability to refresh links as a bulk operation as well
* minor icon and wording changes
---------
Co-authored-by: MohamedBassem <me@mbassem.com>
Diffstat (limited to 'apps/web/components/dashboard/BulkBookmarksAction.tsx')
| -rw-r--r-- | apps/web/components/dashboard/BulkBookmarksAction.tsx | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/apps/web/components/dashboard/BulkBookmarksAction.tsx b/apps/web/components/dashboard/BulkBookmarksAction.tsx index 0867fdd2..39e13940 100644 --- a/apps/web/components/dashboard/BulkBookmarksAction.tsx +++ b/apps/web/components/dashboard/BulkBookmarksAction.tsx @@ -8,10 +8,21 @@ import { import ActionConfirmingDialog from "@/components/ui/action-confirming-dialog"; import { useToast } from "@/components/ui/use-toast"; import useBulkActionsStore from "@/lib/bulkActions"; -import { CheckCheck, Hash, Link, List, Pencil, Trash2, X } from "lucide-react"; +import { + CheckCheck, + FileDown, + Hash, + Link, + List, + Pencil, + RotateCw, + Trash2, + X, +} from "lucide-react"; import { useDeleteBookmark, + useRecrawlBookmark, useUpdateBookmark, } from "@hoarder/shared-react/hooks/bookmarks"; import { BookmarkTypes } from "@hoarder/shared/types/bookmarks"; @@ -63,11 +74,35 @@ export default function BulkBookmarksAction() { onError, }); + const recrawlBookmarkMutator = useRecrawlBookmark({ + onSuccess: () => { + setIsBulkEditEnabled(false); + }, + onError, + }); + interface UpdateBookmarkProps { favourited?: boolean; archived?: boolean; } + const recrawlBookmarks = async (archiveFullPage: boolean) => { + const links = selectedBookmarks.filter( + (item) => item.content.type === BookmarkTypes.LINK, + ); + await Promise.all( + links.map((item) => + recrawlBookmarkMutator.mutateAsync({ + bookmarkId: item.id, + archiveFullPage, + }), + ), + ); + toast({ + description: `${links.length} bookmarks will be ${archiveFullPage ? "re-crawled and archived!" : "refreshed!"}`, + }); + }; + function isClipboardAvailable() { if (typeof window === "undefined") { return false; @@ -173,6 +208,20 @@ export default function BulkBookmarksAction() { hidden: !isBulkEditEnabled, }, { + name: "Download Full Page Archive", + icon: <FileDown size={18} />, + action: () => recrawlBookmarks(true), + isPending: recrawlBookmarkMutator.isPending, + hidden: !isBulkEditEnabled, + }, + { + name: "Refresh", + icon: <RotateCw size={18} />, + action: () => recrawlBookmarks(false), + isPending: recrawlBookmarkMutator.isPending, + hidden: !isBulkEditEnabled, + }, + { name: "Delete", icon: <Trash2 size={18} color="red" />, action: () => setIsDeleteDialogOpen(true), |
