diff --git a/client/coral-admin/src/actions/install.js b/client/coral-admin/src/actions/install.js index 3bb81a1c0..52ab5233a 100644 --- a/client/coral-admin/src/actions/install.js +++ b/client/coral-admin/src/actions/install.js @@ -1,8 +1,7 @@ import coralApi from 'coral-framework/helpers/response'; import * as actions from '../constants/install'; - -// import validate from 'coral-framework/helpers/validate'; -// import errorMsj from 'coral-framework/helpers/error'; +import validate from 'coral-framework/helpers/validate'; +import errorMsj from 'coral-framework/helpers/error'; export const nextStep = () => ({type: actions.NEXT_STEP}); export const previousStep = () => ({type: actions.PREVIOUS_STEP}); @@ -12,35 +11,46 @@ const installRequest = () => ({type: actions.INSTALL_REQUEST}); const installSuccess = () => ({type: actions.INSTALL_SUCCESS}); const installFailure = error => ({type: actions.INSTALL_FAILURE, error}); -export const submit = () => (dispatch, getState) => { - const formData = getState().install.toJS().data; - console.log('Handling Submit'); - console.log(formData.settings); +const addError = (name, error) => ({type: actions.ADD_ERROR, name, error}); +const hasError = error => ({type: actions.HAS_ERROR, error}); +const clearErrors = () => ({type: actions.CLEAR_ERRORS}); - if (!(formData.settings != null)) { - return console.log('Validation Failed'); +export const submitSettings = () => (dispatch, getState) => { + const formData = getState().install.toJS().data.settings; + + if (!(formData != null)) { + return dispatch(hasError()); } - const empty = Object.keys(formData.settings).filter(name => { - console.log(name); - return !formData.settings[name].length; + // Required Validation + const empty = Object.keys(formData).filter(name => { + const cond = !formData[name].length; + + // Adding Error + dispatch(addError(name, 'Please, fill this field ')); + return cond; }); - console.log( - empty - ); + if (empty.length) { + return dispatch(hasError('Please fill the form')); + } - // const empty = Object.keys(formData.settings) - // .filter(name => !formData[name].length) + // RegExp Validation + const validation = Object.keys(formData).filter(name => { + const cond = !validate[name](formData[name]); + if (cond) { + // Adding Error + dispatch(addError(name, errorMsj[name])); + } - // console.log( - // empty - // ) - // if (empty.length) { - // console.log('Validation Failed') - // } - // .filter(name => data[name]) + return cond; + }); + if (validation.length) { + return dispatch(hasError('Please check the form')); + } + + return dispatch(clearErrors()); }; export const install = () => dispatch => { diff --git a/client/coral-admin/src/constants/install.js b/client/coral-admin/src/constants/install.js index 08558e2f2..06d047adc 100644 --- a/client/coral-admin/src/constants/install.js +++ b/client/coral-admin/src/constants/install.js @@ -1,11 +1,12 @@ export const NEXT_STEP = 'NEXT_STEP'; -export const PREVIOUS_STEP = 'PREVIOUS_STEP'; export const GO_TO_STEP = 'GO_TO_STEP'; +export const PREVIOUS_STEP = 'PREVIOUS_STEP'; +export const ADD_ERROR = 'ADD_ERROR'; +export const HAS_ERROR = 'HAS_ERROR'; +export const SHOW_ERRORS = 'SHOW_ERRORS'; +export const CLEAR_ERRORS = 'CLEAR_ERRORS'; export const INSTALL_REQUEST = 'INSTALL_REQUEST'; export const INSTALL_SUCCESS = 'INSTALL_SUCCESS'; export const INSTALL_FAILURE = 'INSTALL_FAILURE'; -export const SHOW_ERRORS = 'SHOW_ERRORS'; -export const HAS_ERROR = 'HAS_ERROR'; -export const UPDATE_FORMDATA_SETTINGS = 'UPDATE_FORMDATA_SETTINGS'; export const UPDATE_FORMDATA_USER = 'UPDATE_FORMDATA_USER'; -export const ADD_ERROR = 'ADD_ERROR'; +export const UPDATE_FORMDATA_SETTINGS = 'UPDATE_FORMDATA_SETTINGS'; diff --git a/client/coral-admin/src/containers/Install/InstallContainer.js b/client/coral-admin/src/containers/Install/InstallContainer.js index c9d81fe64..ca6ac722c 100644 --- a/client/coral-admin/src/containers/Install/InstallContainer.js +++ b/client/coral-admin/src/containers/Install/InstallContainer.js @@ -3,7 +3,7 @@ import {connect} from 'react-redux'; import styles from './style.css'; import {Wizard, WizardNav} from 'coral-ui'; import {Layout} from '../../components/ui/Layout'; -import {nextStep, previousStep, goToStep, updateUserFormData, updateSettingsFormData, submit} from '../../actions/install'; +import {nextStep, previousStep, goToStep, updateUserFormData, updateSettingsFormData, submitSettings} from '../../actions/install'; import InitialStep from './components/Steps/InitialStep'; import AddOrganizationName from './components/Steps/AddOrganizationName'; @@ -47,7 +47,7 @@ const mapDispatchToProps = dispatch => ({ }, handleSubmit: e => { e.preventDefault(); - dispatch(submit()); + dispatch(submitSettings()); } }); diff --git a/client/coral-admin/src/reducers/install.js b/client/coral-admin/src/reducers/install.js index 6f98b2296..e64cdff2a 100644 --- a/client/coral-admin/src/reducers/install.js +++ b/client/coral-admin/src/reducers/install.js @@ -3,10 +3,20 @@ import {Map} from 'immutable'; import * as actions from '../constants/install'; const initialState = Map({ - data: Map(), - errors: Map(), + data: Map({ + settings: Map({ + organizationName: '' + }), + user: Map({ + displayName: '' + }) + }), + errors: Map({ + organizationName: '' + }), showErrors: false, hasError: false, + error: null, step: 0, navItems: [{ text: '1. Add Organization Name', @@ -35,16 +45,16 @@ export default function install (state = initialState, action) { case actions.UPDATE_FORMDATA_USER: return state .setIn(['data', 'user', action.name], action.value); - case actions.SHOW_ERRORS: - return state - .set('showErrors', action.show); case actions.HAS_ERROR: return state - .set('hasError', action.has); + .merge({ + hasError: true, + showErrors: true + }); case actions.ADD_ERROR: return state .setIn(['errors', action.name], action.error); - case actions.NO_ERROR: + case actions.CLEAR_ERRORS: return state .set('errors', Map()); default :