Files
portabase/src/components/wrappers/dashboard/projects/ButtonDeleteProject/ButtonDeleteProject.tsx
T

42 lines
1.3 KiB
TypeScript
Raw Normal View History

2025-05-16 15:54:17 +02:00
"use client";
2024-12-16 20:01:30 +01:00
2025-05-16 15:54:17 +02:00
import { Trash2 } from "lucide-react";
import { ButtonWithConfirm } from "@/components/wrappers/common/button/button-with-confirm";
import { useMutation } from "@tanstack/react-query";
import { deleteProjectAction } from "@/components/wrappers/dashboard/projects/ButtonDeleteProject/delete-project.action";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
2024-12-01 11:11:27 +01:00
export type ButtonDeleteProjectProps = {
2025-05-16 15:54:17 +02:00
text?: string;
projectId: string;
};
2024-12-01 11:11:27 +01:00
export const ButtonDeleteProject = (props: ButtonDeleteProjectProps) => {
2025-05-16 15:54:17 +02:00
const router = useRouter();
2024-12-17 19:42:02 +01:00
const mutation = useMutation({
mutationFn: () => deleteProjectAction(props.projectId),
2025-01-03 15:55:16 +01:00
onSuccess: async (result: any) => {
2025-05-16 15:54:17 +02:00
if (result.data?.success) {
2024-12-17 19:42:02 +01:00
toast.success(result.data.actionSuccess.message);
2025-05-16 15:54:17 +02:00
router.push("/");
} else {
2025-01-03 15:55:16 +01:00
toast.error(result.data.actionError.message || "Unknown error occurred.");
2024-12-17 19:42:02 +01:00
}
},
2025-05-16 15:54:17 +02:00
});
2024-12-01 11:11:27 +01:00
return (
<ButtonWithConfirm
text={props.text ? props.text : ""}
onClick={() => {
2025-05-16 15:54:17 +02:00
mutation.mutate();
2024-12-01 11:11:27 +01:00
}}
variant={"destructive"}
2024-12-17 19:42:02 +01:00
isPending={mutation.isPending}
2024-12-01 11:11:27 +01:00
className="gap-2"
2025-05-16 15:54:17 +02:00
icon={<Trash2 />}
2024-12-01 11:11:27 +01:00
/>
2025-05-16 15:54:17 +02:00
);
};