import { Bookmark } from "@markone/core" import { useDeleteBookmark } from "~/bookmark/api" import { Button } from "~/components/button" import { Dialog, DialogActionRow, DialogBody, DialogTitle } from "~/components/dialog" import { LoadingSpinner } from "~/components/loading-spinner" import { useMnemonics } from "~/hooks/use-mnemonics" import { DialogKind, useBookmarkPageStore } from "../-store" function DeleteBookmarkDialog({ bookmark }: { bookmark: Bookmark }) { const closeDialog = useBookmarkPageStore((state) => state.closeDialog) const deleteBookmarkMutation = useDeleteBookmark() useMnemonics( { y: proceed, n: cancel, }, { ignore: () => false }, ) async function proceed() { try { await deleteBookmarkMutation.mutateAsync({ bookmark }) closeDialog() } catch (error) { console.error(error) } } function cancel() { closeDialog() } function body() { switch (deleteBookmarkMutation.status) { case "pending": return (
Deleting
The bookmark titled:
"{bookmark.title}"
will be deleted. Proceed?
Failed to delete the bookmark!
} } function title() { switch (deleteBookmarkMutation.status) { case "pending": return "PLEASE WAIT" case "idle": return "CONFIRM" case "error": return "ERROR OCCURRED" } } return ( ) } export { DeleteBookmarkDialog }