"use client";
import { DBWorkflow } from "app-types/workflow";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from "ui/dropdown-menu";
import { EditWorkflowPopup } from "./edit-workflow-popup";
import { useState } from "react";
import { safe } from "ts-safe";
import { toast } from "sonner";
import { mutate } from "swr";
import { useTranslations } from "next-intl";
import { PencilIcon, Trash2Icon } from "lucide-react";
interface WorkflowContextMenuProps {
children: React.ReactNode;
workflow: Pick<
DBWorkflow,
"id" | "name" | "description" | "icon" | "isPublished" | "visibility"
>;
}
export function WorkflowContextMenu(props: WorkflowContextMenuProps) {
const [editOpen, setEditOpen] = useState(false);
const [open, setOpen] = useState(false);
const t = useTranslations();
const handleDeleteWorkflow = async () => {
toast.promise(
safe(() =>
fetch(`/api/workflow/${props.workflow.id}`, {
method: "DELETE",
}),
)
.ifOk(() => {
mutate("/api/workflow");
setOpen(false);
})
.unwrap(),
{
success: t("Common.success"),
loading: t("Common.deleting"),
},
);
};
return (
<>
{props.children}
e.stopPropagation()}>
setEditOpen(true)}
>
{t("Common.edit")}
{
e.stopPropagation();
handleDeleteWorkflow();
}}
>
{t("Common.delete")}
>
);
}