diff --git a/packages/component-faraday-ui/src/submissionRevision/ResponseToReviewer.js b/packages/component-faraday-ui/src/submissionRevision/ResponseToReviewer.js index ae8d081db29f25e6d7ebc0c77f055feb6459cbd4..f3b6c168fa2da6e0526cdd2d94f8634efa3809b6 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 181369c52f5f432b48c4557484b846a97d37c35e..67d42391f08047c465b2ce90c2a2f07c1d8882da 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 f5291c81114ce6e3f053fc1402ab8de871912c62..ab28ccc47a0564071bd987022aa022f5f3fe20a8 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 bee0fa857803e91bf8987c4fabbf9ffd24fb4275..d09b967df9b623398a9491b6757491f6c209d603 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',