import { useState } from "react"; import { ActionButton } from "@/components/ui/action-button"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; import { toast } from "@/components/ui/use-toast"; import { useTranslation } from "@/lib/i18n/client"; import { Pencil, Trash2 } from "lucide-react"; import type { ZBookmark } from "@karakeep/shared/types/bookmarks"; import { useUpdateBookmark } from "@karakeep/shared-react/hooks/bookmarks"; import DeleteBookmarkConfirmationDialog from "../bookmarks/DeleteBookmarkConfirmationDialog"; import { EditBookmarkDialog } from "../bookmarks/EditBookmarkDialog"; import { ArchivedActionIcon, FavouritedActionIcon } from "../bookmarks/icons"; export default function ActionBar({ bookmark }: { bookmark: ZBookmark }) { const { t } = useTranslation(); const [deleteBookmarkDialogOpen, setDeleteBookmarkDialogOpen] = useState(false); const [isEditBookmarkDialogOpen, setEditBookmarkDialogOpen] = useState(false); const onError = () => { toast({ variant: "destructive", title: "Something went wrong", description: "There was a problem with your request.", }); }; const { mutate: favBookmark, isPending: pendingFav } = useUpdateBookmark({ onSuccess: () => { toast({ description: "The bookmark has been updated!", }); }, onError, }); const { mutate: archiveBookmark, isPending: pendingArchive } = useUpdateBookmark({ onSuccess: (resp) => { toast({ description: `The bookmark has been ${resp.archived ? "Archived" : "Un-archived"}!`, }); }, onError, }); return (
{t("actions.edit")} { favBookmark({ bookmarkId: bookmark.id, favourited: !bookmark.favourited, }); }} > {bookmark.favourited ? t("actions.unfavorite") : t("actions.favorite")} { archiveBookmark({ bookmarkId: bookmark.id, archived: !bookmark.archived, }); }} > {bookmark.archived ? t("actions.unarchive") : t("actions.archive")} {t("actions.delete")}
); }