import React, { useEffect, useState } from 'react'; import { addActiveElement, removeFocusedElement } from "../../../actions/MainNavigation/mainNavigationActions"; import AddItemLayout from '../../ControlPanel/AddItemLayout/AddItemLayout'; import { getUserNS } from '../../../ControlPanelService/UserNS'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import Toolbar from '../../MainNav/Toolbar/Toolbar'; import { useHistory } from 'react-router-dom'; import Spinner from '../../Spinner/Spinner'; import { useDispatch, useSelector } from 'react-redux'; import './AddDomainNameSystem.scss'; import AdvancedOptions from './AdvancedOptions/AdvancedOptions'; import { addDomainNameSystem } from '../../../ControlPanelService/Dns'; import { Helmet } from 'react-helmet'; import { refreshCounters } from 'src/actions/MenuCounters/menuCounterActions'; import HtmlParser from 'react-html-parser'; const AddDomainNameSystem = props => { const { i18n } = useSelector(state => state.session); const dispatch = useDispatch(); const token = localStorage.getItem("token"); const history = useHistory(); const [state, setState] = useState({ loading: false, showAdvancedOptions: false, okMessage: '', domain: '', errorMessage: '', userNS: [] }); useEffect(() => { dispatch(addActiveElement('/list/dns/')); dispatch(removeFocusedElement()); setState({ ...state, loading: true }); getUserNS() .then(result => { if (result.data.length) { setState({ ...state, userNS: result.data, loading: false }); } }) .catch(err => console.error(err)); }, []); const submitFormHandler = event => { event.preventDefault(); let domainNameSystem = {}; for (var [name, value] of (new FormData(event.target)).entries()) { domainNameSystem[name] = value; } if (Object.keys(domainNameSystem).length !== 0 && domainNameSystem.constructor === Object) { setState({ ...state, loading: true }); addDomainNameSystem(domainNameSystem) .then(result => { if (result.status === 200) { const { error_msg: errorMessage, ok_msg: okMessage } = result.data; if (errorMessage) { setState({ ...state, errorMessage, okMessage, loading: false }); } else { dispatch(refreshCounters()).then(() => { setState({ ...state, okMessage, errorMessage: '', loading: false }); }); } } }) .catch(err => console.error(err)); } } const renderAdvancedOptions = () => { if (state.showAdvancedOptions) { return ; } } const showAdvancedOption = () => { setState({ ...state, showAdvancedOptions: !state.showAdvancedOptions }); } return (
{`Vesta - ${i18n.DNS}`}
{i18n['Adding DNS Domain'] ?? 'Adding DNS Domain'}
{state.errorMessage ? : ''} {state.errorMessage}
{state.okMessage ? : ''} {HtmlParser(state.okMessage)}
{state.loading ? : (
submitFormHandler(event)}>
{renderAdvancedOptions()}
)}
); } export default AddDomainNameSystem;