import React from 'react'; import { connect } from 'react-redux'; import { Form, Input, Button, Icon } from 'UI'; import { save, edit, update , fetchList, remove } from 'Duck/site'; import { pushNewSite } from 'Duck/user'; import { setSiteId } from 'Duck/site'; import { withRouter } from 'react-router-dom'; import styles from './siteForm.module.css'; import { confirm } from 'UI'; @connect(state => ({ site: state.getIn([ 'site', 'instance' ]), sites: state.getIn([ 'site', 'list' ]), siteList: state.getIn([ 'site', 'list' ]), loading: state.getIn([ 'site', 'save', 'loading' ]), }), { save, remove, 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(() => { this.props.fetchList().then(() => { const { sites } = this.props; const site = sites.last(); if (!pathname.includes('/client')) { this.props.setSiteId(site.get('id')) } this.props.onClose(null, site) }) // this.props.pushNewSite(site) }); } } remove = async (site) => { if (await confirm({ header: 'Projects', confirmation: `Are you sure you want to delete this Project? We won't be able to record anymore sessions.` })) { this.props.remove(site.id).then(() => { this.props.onClose(null) }); } }; 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." }
}
); } }