import { zodResolver } from "@hookform/resolvers/zod"; import { useRouter } from "next/router"; import { useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { Toaster } from "react-hot-toast"; import z from "zod"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { Alert, Button, EmailField, Form, PasswordField, TextField, SelectField, Switch, } from "@calcom/ui/v2"; import { ExchangeAuthentication } from "../../../enums"; interface IFormData { url: string; username: string; password: string; authenticationMethod: ExchangeAuthentication; useCompression: boolean; } const schema = z .object({ url: z.string().url(), username: z.string().email(), password: z.string(), authenticationMethod: z.number().default(ExchangeAuthentication.STANDARD), useCompression: z.boolean().default(false), }) .strict(); export default function ExchangeSetup() { const { t } = useLocale(); const router = useRouter(); const [errorMessage, setErrorMessage] = useState(""); const form = useForm({ defaultValues: { authenticationMethod: ExchangeAuthentication.STANDARD }, resolver: zodResolver(schema), }); const authenticationMethods = [ { value: ExchangeAuthentication.STANDARD, label: t("exchange_authentication_standard") }, { value: ExchangeAuthentication.NTLM, label: t("exchange_authentication_ntlm") }, ]; return ( <>
{/* eslint-disable @next/next/no-img-element */} Microsoft Exchange

{t("exchange_add")}

{t("credentials_stored_encrypted")}
{ setErrorMessage(""); const res = await fetch("/api/integrations/exchangecalendar/add", { method: "POST", body: JSON.stringify(values), headers: { "Content-Type": "application/json", }, }); const json = await res.json(); if (!res.ok) { setErrorMessage(json?.message || t("something_went_wrong")); } else { router.push(json.url); } }}>
( { onChange(authentication?.value); form.setValue("authenticationMethod", authentication!.value); }} /> )} /> { form.setValue("useCompression", alt); }} />
{errorMessage && }
); }