import * as RadioGroup from "@radix-ui/react-radio-group"; import { UnitTypeLongPlural } from "dayjs"; import { Trans } from "next-i18next"; import type { FormValues } from "pages/event-types/[type]"; import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import z from "zod"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; import { Alert, Input, Label, SettingsToggle } from "@calcom/ui"; type RequiresConfirmationControllerProps = { metadata: z.infer; requiresConfirmation: boolean; onRequiresConfirmation: Dispatch>; seatsEnabled: boolean; }; export default function RequiresConfirmationController({ metadata, requiresConfirmation, onRequiresConfirmation, seatsEnabled, }: RequiresConfirmationControllerProps) { const { t } = useLocale(); const [requiresConfirmationSetup, setRequiresConfirmationSetup] = useState( metadata?.requiresConfirmationThreshold ); const defaultRequiresConfirmationSetup = { time: 30, unit: "minutes" as UnitTypeLongPlural }; const formMethods = useFormContext(); useEffect(() => { if (!requiresConfirmation) { formMethods.setValue("metadata.requiresConfirmationThreshold", undefined); } }, [requiresConfirmation]); return (
{seatsEnabled ? ( ) : ( ( { formMethods.setValue("requiresConfirmation", val); onRequiresConfirmation(val); }}> { if (val === "always") { formMethods.setValue("requiresConfirmation", true); onRequiresConfirmation(true); formMethods.setValue("metadata.requiresConfirmationThreshold", undefined); setRequiresConfirmationSetup(undefined); } else if (val === "notice") { formMethods.setValue("requiresConfirmation", true); onRequiresConfirmation(true); formMethods.setValue( "metadata.requiresConfirmationThreshold", requiresConfirmationSetup || defaultRequiresConfirmationSetup ); } }}>
), }} />
)} /> )}
); }