import { revalidateAvailabilityList } from "app/(use-page-wrapper)/(main-nav)/availability/actions"; import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { Dialog } from "@calcom/features/components/controlled-dialog"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { HttpError } from "@calcom/lib/http-error"; import { trpc } from "@calcom/trpc/react"; import { Button } from "@calcom/ui/components/button"; import { DialogContent, DialogFooter, DialogTrigger, DialogClose } from "@calcom/ui/components/dialog"; import { Form } from "@calcom/ui/components/form"; import { InputField } from "@calcom/ui/components/form"; import { showToast } from "@calcom/ui/components/toast"; export function NewScheduleButton({ name = "new-schedule", fromEventType, }: { name?: string; fromEventType?: boolean; }) { const router = useRouter(); const { t } = useLocale(); const form = useForm<{ name: string; }>(); const { register } = form; const utils = trpc.useUtils(); const createMutation = trpc.viewer.availability.schedule.create.useMutation({ onSuccess: async ({ schedule }) => { await router.push(`/availability/${schedule.id}${fromEventType ? "?fromEventType=true" : ""}`); showToast(t("schedule_created_successfully", { scheduleName: schedule.name }), "success"); revalidateAvailabilityList(); utils.viewer.availability.list.setData(undefined, (data) => { const newSchedule = { ...schedule, isDefault: false, availability: [] }; if (!data) return { schedules: [newSchedule], }; return { ...data, schedules: [...data.schedules, newSchedule], }; }); }, onError: (err) => { if (err instanceof HttpError) { const message = `${err.statusCode}: ${err.message}`; showToast(message, "error"); } if (err.data?.code === "UNAUTHORIZED") { const message = `${err.data.code}: ${t("error_schedule_unauthorized_create")}`; showToast(message, "error"); } }, }); return (
{ createMutation.mutate(values); }}> (!v || v.trim() === "" ? null : v), required:t('required'), pattern:{ value: new RegExp( "^[\\p{L}\\p{M}\\p{N}\\s&\\-_'\\u2018\\u2019@.:,/]+$", "u" ), message:t("invalid_characters_in_name"), } })} />
); }