import { connect } from 'react-redux'; import { Input, Button, Label } from 'UI'; import { save, edit, update , fetchList } from 'Duck/site'; import { pushNewSite, setSiteId } from 'Duck/user'; import { withRouter } from 'react-router-dom'; import styles from './siteForm.css'; @connect(state => ({ site: state.getIn([ 'site', 'instance' ]), sites: state.getIn([ 'site', 'list' ]), siteList: state.getIn([ 'site', 'list' ]), loading: state.getIn([ 'site', 'save', 'loading' ]), }), { save, edit, update, pushNewSite, fetchList, setSiteId }) @withRouter export default class NewSiteForm extends React.PureComponent { state = { existsError: false, } onSubmit = e => { e.preventDefault(); const { site, siteList, location: { pathname } } = this.props; if (!site.exists() && siteList.some(({ name }) => name === site.name)) { return this.setState({ existsError: true }); } if (site.exists()) { this.props.update(this.props.site, this.props.site.id).then(() => { this.props.onClose(null) this.props.fetchList(); }) } else { this.props.save(this.props.site).then(() => { const { sites } = this.props; const site = sites.last(); this.props.pushNewSite(site) if (!pathname.includes('/client')) { this.props.setSiteId(site.id) } this.props.onClose(null, site) }); } } edit = ({ target: { name, value } }) => { this.setState({ existsError: false }); this.props.edit({ [ name ]: value }); } render() { const { site, loading } = this.props; return (
{ this.state.existsError &&
{ "Site exists already. Please choose another one." }
}
); } }