import React from 'react'; import PropTypes from 'prop-types'; 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'; 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', }, ]; const Form = ({ handleSubmit, submitting, invalid, }) => { const { t } = useTranslation(); const dispatch = useDispatch(); const { processingSetConfig } = useSelector((state) => state.dnsConfig, shallowEqual); const { cache_ttl_max, cache_ttl_min, } = useSelector((state) => state.form[FORM_NAME.CACHE].values, shallowEqual); const minExceedsMax = 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, validate, min = 0, max = UINT32_RANGE.MAX, }) =>
{t(description)}
)} {minExceedsMax && ( {t('ttl_cache_validation')} )}
; }; Form.propTypes = { handleSubmit: PropTypes.func.isRequired, submitting: PropTypes.bool.isRequired, invalid: PropTypes.bool.isRequired, }; export default reduxForm({ form: FORM_NAME.CACHE })(Form);