import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner"; import type { CombinedFilterSegment } from "@calcom/features/data-table/lib/types"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { Button } from "@calcom/ui/components/button"; import { Dialog, DialogContent, DialogFooter, DialogHeader } from "@calcom/ui/components/dialog"; import { Form, TextField } from "@calcom/ui/components/form"; import { showToast } from "@calcom/ui/components/toast"; import { useSession } from "next-auth/react"; import { useForm } from "react-hook-form"; import { useDataTable } from "~/data-table/hooks"; type FormValues = { name: string; }; export function DuplicateSegmentDialog({ segment, onClose, }: { segment: CombinedFilterSegment; onClose: () => void; }) { const { t } = useLocale(); const form = useForm({ defaultValues: { name: "", }, }); const { setSegmentId } = useDataTable(); const utils = trpc.useUtils(); const session = useSession(); const isAdminOrOwner = checkAdminOrOwner(session.data?.user?.org?.role); const createSegment = { mutate: (_args: Record) => {}, isPending: false }; const isPending = createSegment.isPending; const handleSubmit = (data: FormValues) => { if (!segment) { return; } if (segment.type === "user") { const { type: _type, id: _id, name: _name, team: _team, teamId, ...rest } = segment; if (segment.scope === "TEAM" && isAdminOrOwner) { createSegment.mutate({ ...rest, teamId: teamId ?? 0, scope: "TEAM", name: data.name, }); } else { createSegment.mutate({ ...rest, scope: "USER", name: data.name, }); } } else if (segment.type === "system") { const { type: _type, ...rest } = segment; createSegment.mutate({ ...rest, scope: "USER", name: data.name, }); } }; return ( { if (!open) { onClose(); } }}>
); }