import React from 'react'; import { Field, reduxForm } from 'redux-form'; import { Trans, useTranslation } from 'react-i18next'; import { shallowEqual, useDispatch, useSelector } from 'react-redux'; import { renderInputField, toNumber, CheckboxField } from '../../../../helpers/form'; import { CACHE_CONFIG_FIELDS, FORM_NAME, UINT32_RANGE } from '../../../../helpers/constants'; import { replaceZeroWithEmptyString } from '../../../../helpers/helpers'; import { clearDnsCache } from '../../../../actions/dnsConfig'; import { RootState } from '../../../../initialState'; const INPUTS_FIELDS = [ { name: CACHE_CONFIG_FIELDS.cache_size, title: 'cache_size', description: 'cache_size_desc', placeholder: 'enter_cache_size', }, { name: CACHE_CONFIG_FIELDS.cache_ttl_min, title: 'cache_ttl_min_override', description: 'cache_ttl_min_override_desc', placeholder: 'enter_cache_ttl_min_override', }, { name: CACHE_CONFIG_FIELDS.cache_ttl_max, title: 'cache_ttl_max_override', description: 'cache_ttl_max_override_desc', placeholder: 'enter_cache_ttl_max_override', }, ]; interface CacheFormProps { handleSubmit: (...args: unknown[]) => string; submitting: boolean; invalid: boolean; } const Form = ({ handleSubmit, submitting, invalid }: CacheFormProps) => { const { t } = useTranslation(); const dispatch = useDispatch(); const { processingSetConfig } = useSelector((state: RootState) => state.dnsConfig, shallowEqual); const { cache_ttl_max, cache_ttl_min } = useSelector( (state: RootState) => state.form[FORM_NAME.CACHE].values, shallowEqual, ); const minExceedsMax = cache_ttl_min > 0 && cache_ttl_max > 0 && cache_ttl_min > cache_ttl_max; const handleClearCache = () => { if (window.confirm(t('confirm_dns_cache_clear'))) { dispatch(clearDnsCache()); } }; return (
{INPUTS_FIELDS.map(({ name, title, description, placeholder }) => (
{t(description)}
))} {minExceedsMax && {t('ttl_cache_validation')}}
); }; export default reduxForm({ form: FORM_NAME.CACHE })(Form);