/* eslint-disable */ // @ts-nocheck import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation"; import { ActionGroup, ActionListItem, Alert, AlertActionLink, AlertVariant, Button, Checkbox, Radio, FormGroup, PageSection, } from "../../shared/@patternfly/react-core"; import { Controller, FormProvider, useForm, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import { FormPanel, PasswordControl, SwitchControl, TextControl, } from "../../shared/keycloak-ui-shared"; import { useAdminClient } from "../admin-client"; import { useAlerts } from "../../shared/keycloak-ui-shared"; import { FormAccess } from "../components/form/FormAccess"; import { toUser } from "../user/routes/User"; import { emailRegexPattern } from "../util"; import { useCurrentUser } from "../utils/useCurrentUser"; import useToggle from "../utils/useToggle"; import "./realm-settings-section.css"; type RealmSettingsEmailTabProps = { realm: RealmRepresentation; save: (realm: RealmRepresentation) => void; }; type FormFields = Omit; export const RealmSettingsEmailTab = ({ realm, save, }: RealmSettingsEmailTabProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const currentUser = useCurrentUser(); const form = useForm({ defaultValues: realm }); const { control, handleSubmit, watch, reset: resetForm, getValues } = form; const reset = () => resetForm(realm); const watchFromValue = watch("smtpServer.from", ""); const watchHostValue = watch("smtpServer.host", ""); const [isTesting, toggleTest] = useToggle(); const authenticationEnabled = useWatch({ control, name: "smtpServer.auth", defaultValue: realm.smtpServer?.auth || "false", }); const authType = useWatch({ control, name: "smtpServer.authType", defaultValue: realm.smtpServer?.authType || "basic", }); const testConnection = async () => { const toNumber = (value: string) => Number(value); const toBoolean = (value: string) => value === true.toString(); const valueMapper = new Map unknown>([ ["port", toNumber], ["ssl", toBoolean], ["starttls", toBoolean], ["auth", toBoolean], ]); const serverSettings = { ...getValues()["smtpServer"] }; for (const [key, mapperFn] of valueMapper.entries()) { serverSettings[key] = mapperFn(serverSettings[key]); } // For default value, back end is expecting null instead of 0 if (serverSettings.port === 0) serverSettings.port = null; try { toggleTest(); await adminClient.realms.testSMTPConnection( { realm: realm.realm! }, serverSettings, ); addAlert(t("testConnectionSuccess"), AlertVariant.success); } catch (error) { addError("testConnectionError", error); } toggleTest(); }; return ( ( field.onChange("" + value)} /> )} /> ( field.onChange("" + value)} /> )} /> {authenticationEnabled === "true" && ( <> ( <> field.onChange("basic")} /> field.onChange("token")} /> )} /> {authType === "basic" && ( )} {authType === "token" && ( <> )} )} ( field.onChange("" + value)} /> )} /> {currentUser.email ? ( ) : ( ( )} > {t("testConnectionHint.withoutEmailAction")} } /> )} ); };