import React from 'react'; import useAppParams from 'lib/hooks/useAppParams'; import { Controller, useForm } from 'react-hook-form'; import { ErrorMessage } from '@hookform/error-message'; import { yupResolver } from '@hookform/resolvers/yup'; import { RouterParamsClusterConnectConnector } from 'lib/paths'; import yup from 'lib/yupExtended'; import Editor from 'components/common/Editor/Editor'; import { Button } from 'components/common/Button/Button'; import { useConnectorConfig, useUpdateConnectorConfig, } from 'lib/hooks/api/kafkaConnect'; import { ConnectEditWarningMessageStyled, ConnectEditWrapperStyled, } from './Config.styled'; const validationSchema = yup.object().shape({ config: yup.string().required().isJsonObject(), }); interface FormValues { config: string; } const Config: React.FC = () => { const routerParams = useAppParams(); const { data: config } = useConnectorConfig(routerParams); const mutation = useUpdateConnectorConfig(routerParams); const { handleSubmit, control, reset, formState: { isDirty, isSubmitting, isValid, errors }, setValue, } = useForm({ mode: 'onChange', resolver: yupResolver(validationSchema), defaultValues: { config: JSON.stringify(config, null, '\t'), }, }); React.useEffect(() => { if (config) { setValue('config', JSON.stringify(config, null, '\t')); } }, [config, setValue]); const onSubmit = async (values: FormValues) => { try { const requestBody = JSON.parse(values.config.trim()); await mutation.mutateAsync(requestBody); reset(values); } catch (e) { // do nothing } }; const hasCredentials = JSON.stringify(config, null, '\t').includes( '"******"' ); return ( {hasCredentials && ( Please replace ****** with the real credential values to avoid accidentally breaking your connector config! )}
( )} />
); }; export default Config;