From 85ab8d3e0242c44b53c893172feea95a4732e269 Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munt@gmail.com> Date: Thu, 18 Oct 2018 17:19:08 +0300 Subject: [PATCH] feat(submitRevision): handle errors when collapsing the contextual boxes --- .../src/submissionRevision/ResponseToReviewer.js | 1 - .../src/submissionRevision/SubmitRevision.js | 4 +++- .../component-manuscript/src/submitRevision/utils.js | 12 ++++-------- .../src/submitRevision/withSubmitRevision.js | 11 +++++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/component-faraday-ui/src/submissionRevision/ResponseToReviewer.js b/packages/component-faraday-ui/src/submissionRevision/ResponseToReviewer.js index ae8d081db..f3b6c168f 100644 --- a/packages/component-faraday-ui/src/submissionRevision/ResponseToReviewer.js +++ b/packages/component-faraday-ui/src/submissionRevision/ResponseToReviewer.js @@ -31,7 +31,6 @@ const ResponseToReviewer = ({ }) => ( <ContextualBox label="Response to Reviewer Comments" - mt={1} startExpanded transparent > diff --git a/packages/component-faraday-ui/src/submissionRevision/SubmitRevision.js b/packages/component-faraday-ui/src/submissionRevision/SubmitRevision.js index 181369c52..67d42391f 100644 --- a/packages/component-faraday-ui/src/submissionRevision/SubmitRevision.js +++ b/packages/component-faraday-ui/src/submissionRevision/SubmitRevision.js @@ -84,4 +84,6 @@ const Root = styled.div` padding: calc(${th('gridUnit')} * 2); ` -export default reduxForm({ form: 'revision' })(SubmitRevision) +export default reduxForm({ form: 'revision', destroyOnUnmount: false })( + SubmitRevision, +) diff --git a/packages/component-manuscript/src/submitRevision/utils.js b/packages/component-manuscript/src/submitRevision/utils.js index f5291c811..ab28ccc47 100644 --- a/packages/component-manuscript/src/submitRevision/utils.js +++ b/packages/component-manuscript/src/submitRevision/utils.js @@ -1,6 +1,6 @@ import { actions } from 'pubsweet-client' +import { get, debounce, omit, set } from 'lodash' import { handleError } from 'pubsweet-component-faraday-ui' -import { get, debounce, omit, mergeWith, set } from 'lodash' import { autosaveRequest } from 'pubsweet-component-wizard/src/redux/autosave' import { submitRevision } from 'pubsweet-component-wizard/src/redux/conversion' @@ -11,12 +11,6 @@ const parseRevision = (values, fragment) => { ...fragment, revision: { ...v, - metadata: mergeWith( - {}, - fragment.metadata, - v.metadata, - (obj, src) => (src === '' ? obj : src), - ), }, } } @@ -31,8 +25,10 @@ export const onChange = debounce(_onChange, 1000, { maxWait: 5000 }) export const onSubmit = ( values, dispatch, - { history, fragment, collection, showModal, setFetching }, + { history, fragment, collection, showModal, setFetching, canSubmit }, ) => { + if (!canSubmit) return + showModal({ title: 'Ready to submit your revision?', subtitle: `Once submitted, the submission can't be modified.`, diff --git a/packages/component-manuscript/src/submitRevision/withSubmitRevision.js b/packages/component-manuscript/src/submitRevision/withSubmitRevision.js index bee0fa857..d09b967df 100644 --- a/packages/component-manuscript/src/submitRevision/withSubmitRevision.js +++ b/packages/component-manuscript/src/submitRevision/withSubmitRevision.js @@ -9,8 +9,8 @@ import { withFileDownload, } from 'pubsweet-component-faraday-ui' import { DragDropContext } from 'react-dnd' +import { change as changeForm } from 'redux-form' import HTML5Backend from 'react-dnd-html5-backend' -import { change as changeForm, getFormSyncErrors, isPristine } from 'redux-form' import { withModal } from 'pubsweet-component-modal/src/components' import { compose, @@ -39,8 +39,10 @@ export default compose( withFileDownload, connect( state => ({ - isPristine: isPristine('revision')(state), - formErrors: getFormSyncErrors('revision')(state), + canSubmit: !get(state, 'form.revision.syncErrors'), + hasFormError: + get(state, 'form.revision.syncErrors') && + get(state, 'form.revision.anyTouched', false), }), { changeForm }, ), @@ -102,6 +104,7 @@ export default compose( 'journal', 'history', 'fragment', + 'canSubmit', 'addAuthor', 'showModal', 'changeForm', @@ -114,6 +117,7 @@ export default compose( 'downloadFile', 'deleteAuthor', 'getSignedUrl', + 'hasFormError', 'fetchingError', 'addResponseFile', 'deleteResponseFile', @@ -121,7 +125,6 @@ export default compose( onChange, onSubmit, validate, - hasFormError: !props.isPristine && !!props.formErrors, responseFile: get( props, 'formValues.revision.responseToReviewers.file', -- GitLab