import { useMemo } from "react"; import { Controller, useForm } from "react-hook-form"; import { Dialog } from "@calcom/features/components/controlled-dialog"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { Button } from "@calcom/ui/components/button"; import { DialogContent, DialogFooter } from "@calcom/ui/components/dialog"; import { Form } from "@calcom/ui/components/form"; import { Label } from "@calcom/ui/components/form"; import { Select } from "@calcom/ui/components/form"; import { showToast } from "@calcom/ui/components/toast"; import { revalidateTeamsList } from "@calcom/web/app/(use-page-wrapper)/(main-nav)/teams/actions"; type InvitationLinkSettingsModalProps = { isOpen: boolean; teamId: number; token: string; expiresInDays?: number; onExit: () => void; }; export interface LinkSettingsForm { expiresInDays: number | undefined; } export default function InviteLinkSettingsModal(props: InvitationLinkSettingsModalProps) { const { t } = useLocale(); const trpcContext = trpc.useUtils(); const deleteInviteMutation = trpc.viewer.teams.deleteInvite.useMutation({ onSuccess: () => { showToast(t("invite_link_deleted"), "success"); trpcContext.viewer.teams.get.invalidate(); trpcContext.viewer.teams.list.invalidate(); revalidateTeamsList(); props.onExit(); }, onError: (e) => { showToast(e.message, "error"); }, }); const setInviteExpirationMutation = trpc.viewer.teams.setInviteExpiration.useMutation({ onSuccess: () => { showToast(t("invite_link_updated"), "success"); trpcContext.viewer.teams.get.invalidate(); trpcContext.viewer.teams.list.invalidate(); revalidateTeamsList(); }, onError: (e) => { showToast(e.message, "error"); }, }); const expiresInDaysOption = useMemo(() => { return [ { value: 1, label: t("one_day") }, { value: 7, label: t("seven_days") }, { value: 30, label: t("thirty_days") }, { value: undefined, label: t("never_expires") }, ]; }, [t]); const linkSettingsFormMethods = useForm({ defaultValues: { expiresInDays: props.expiresInDays, }, }); const handleSubmit = (values: LinkSettingsForm) => { setInviteExpirationMutation.mutate({ token: props.token, expiresInDays: values.expiresInDays, }); }; return ( { props.onExit(); linkSettingsFormMethods.reset(); }}>
(