import { t } from "@lingui/core/macro"; import Button from "~/components/Button"; import { useModal } from "~/providers/modal"; import { usePopup } from "~/providers/popup"; import { api } from "~/utils/api"; export function DeleteChecklistConfirmation({ cardPublicId, checklistPublicId, }: { cardPublicId: string; checklistPublicId: string; }) { const { closeModal } = useModal(); const { showPopup } = usePopup(); const utils = api.useUtils(); const deleteChecklist = api.checklist.delete.useMutation({ onMutate: async () => { await utils.card.byId.cancel({ cardPublicId }); const previous = utils.card.byId.getData({ cardPublicId }); utils.card.byId.setData({ cardPublicId }, (old) => { if (!old) return old as any; const updatedChecklists = old.checklists.filter( (cl) => cl.publicId !== checklistPublicId, ); return { ...old, checklists: updatedChecklists } as typeof old; }); return { previous }; }, onError: (_err, _vars, ctx) => { if (ctx?.previous) utils.card.byId.setData({ cardPublicId }, ctx.previous); showPopup({ header: t`Unable to delete checklist`, message: t`Please try again later, or contact customer support.`, icon: "error", }); }, onSettled: async () => { closeModal(); await utils.card.byId.invalidate({ cardPublicId }); }, }); const handleDelete = () => { deleteChecklist.mutate({ checklistPublicId }); }; return (

{t`Are you sure you want to delete this checklist?`}

{t`This action can't be undone.`}

); }