From 95f80ce5dcac5d11ab4674fc85da1278d8357e1d Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munt@gmail.com> Date: Fri, 22 Jun 2018 11:51:19 +0300 Subject: [PATCH] fix(submit-revision): fix bugs --- .../routes/fragmentsRecommendations/patch.js | 2 +- .../src/components/ManuscriptDetails.js | 8 +++-- .../src/components/ManuscriptLayout.js | 2 +- .../src/components/utils.js | 34 +++++++++---------- .../src/components/WizardFormStep.js | 18 ++++++---- .../src/components/Dashboard/DashboardCard.js | 2 +- .../src/components/Files/Files.js | 9 ++--- 7 files changed, 42 insertions(+), 33 deletions(-) diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js index 6b946fec5..f4b9a4cfd 100644 --- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js +++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js @@ -74,7 +74,7 @@ module.exports = models => async (req, res) => { if (!['pendingApproval', 'revisionRequested'].includes(collection.status)) collectionHelper.updateStatus({ newStatus: 'reviewCompleted' }) } - + await fragment.save() return res.status(200).json(recommendation) } catch (e) { const notFoundError = await services.handleNotFoundError(e, 'Item') diff --git a/packages/component-manuscript/src/components/ManuscriptDetails.js b/packages/component-manuscript/src/components/ManuscriptDetails.js index df5e50181..5c8545b65 100644 --- a/packages/component-manuscript/src/components/ManuscriptDetails.js +++ b/packages/component-manuscript/src/components/ManuscriptDetails.js @@ -7,8 +7,12 @@ import { Authors, Files } from './' import { Expandable } from '../molecules/' const ManuscriptDetails = ({ - collection: { authors = [] }, - fragment: { conflicts = {}, files = {}, metadata: { abstract = '' } }, + fragment: { + files = {}, + authors = [], + conflicts = {}, + metadata: { abstract = '' }, + }, }) => ( <Root> <Expandable label="Details" startExpanded> diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index ea6b9532e..5e7bd4c01 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -53,7 +53,7 @@ const ManuscriptLayout = ({ project={project} version={version} /> - <ManuscriptDetails collection={project} fragment={version} /> + <ManuscriptDetails fragment={version} /> <ReviewsAndReports project={project} version={version} /> {canSeeEditorialComments && editorialRecommendations.length > 0 && ( diff --git a/packages/component-manuscript/src/components/utils.js b/packages/component-manuscript/src/components/utils.js index ed5e3885b..f3aefdd95 100644 --- a/packages/component-manuscript/src/components/utils.js +++ b/packages/component-manuscript/src/components/utils.js @@ -1,5 +1,5 @@ import moment from 'moment' -import { get, find, capitalize, omit, isEmpty, isEqual, debounce } from 'lodash' +import { get, find, capitalize, omit, isEmpty, debounce } from 'lodash' import { actions } from 'pubsweet-client/src' import { change as changeForm } from 'redux-form' @@ -137,25 +137,23 @@ const onChange = ( values, dispatch, { project, version, createRecommendation, updateRecommendation }, - previousValues, ) => { const newValues = parseReviewRequest(values) - const prevValues = parseReviewRequest(previousValues) - if (!isEqual(newValues, prevValues)) { - dispatch(autosaveRequest()) - if (newValues.id) { - updateRecommendation(project.id, version.id, newValues) - .then(r => dispatch(autosaveSuccess(get(r, 'updatedOn')))) - .catch(e => dispatch(autosaveFailure(e))) - } else { - createRecommendation(project.id, version.id, newValues) - .then(r => { - dispatch(changeForm('reviewerReport', 'id', r.id)) - return dispatch(autosaveSuccess(get(r, 'updatedOn'))) - }) - .catch(e => dispatch(autosaveFailure(e))) - } + // if (!isEqual(newValues, prevValues)) { + dispatch(autosaveRequest()) + if (newValues.id) { + updateRecommendation(project.id, version.id, newValues) + .then(r => dispatch(autosaveSuccess(get(r, 'updatedOn')))) + .catch(e => dispatch(autosaveFailure(e))) + } else { + createRecommendation(project.id, version.id, newValues) + .then(r => { + dispatch(changeForm('reviewerReport', 'id', r.id)) + return dispatch(autosaveSuccess(get(r, 'updatedOn'))) + }) + .catch(e => dispatch(autosaveFailure(e))) } + // } } export const onReviewChange = debounce(onChange, 1000, { maxWait: 5000 }) @@ -183,7 +181,7 @@ export const onReviewSubmit = ( updateRecommendation(project.id, version.id, newValues) .then(r => dispatch(autosaveSuccess(get(r, 'updatedOn')))) .then(() => { - dispatch(actions.getFragments()) + dispatch(actions.getFragments({ id: project.id })) hideModal() }) }, diff --git a/packages/component-wizard/src/components/WizardFormStep.js b/packages/component-wizard/src/components/WizardFormStep.js index d5e716601..5579434a3 100644 --- a/packages/component-wizard/src/components/WizardFormStep.js +++ b/packages/component-wizard/src/components/WizardFormStep.js @@ -73,13 +73,19 @@ const submitFragmentRevision = ({ history, redirectPath = '/', }) => { - submitRevision(project.id, version.id).then(() => { - history.push(redirectPath, { - project: project.id, - customId: project.customId, - version: version.id, + submitRevision(project.id, version.id) + .then(() => { + history.push(redirectPath, { + project: project.id, + customId: project.customId, + version: version.id, + }) + }) + .catch(error => { + if (error.validationErrors) { + throw new SubmissionError() + } }) - }) } const onSubmit = ( diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index ae4c120f5..7709aa341 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -143,7 +143,7 @@ const DashboardCard = ({ project.status !== 'draft' && ( <DetailsView> <Top> - <AuthorsWithTooltip authors={project.authors} /> + <AuthorsWithTooltip authors={version.authors} /> </Top> <Bottom> <LeftDetails flex={4}> diff --git a/packages/components-faraday/src/components/Files/Files.js b/packages/components-faraday/src/components/Files/Files.js index 4294b9198..3055f5a4f 100644 --- a/packages/components-faraday/src/components/Files/Files.js +++ b/packages/components-faraday/src/components/Files/Files.js @@ -1,4 +1,4 @@ -import React from 'react' +import React, { Fragment } from 'react' import { th } from '@pubsweet/ui' import PropTypes from 'prop-types' import { get, isEqual } from 'lodash' @@ -6,6 +6,7 @@ import { connect } from 'react-redux' import styled from 'styled-components' import { withRouter } from 'react-router-dom' import { change as changeForm } from 'redux-form' +import { selectCurrentVersion } from 'xpub-selectors' import { compose, lifecycle, @@ -35,7 +36,7 @@ const Files = ({ isRevisionFlow, dropSortableFile, }) => ( - <div> + <Fragment> <Error show={error}> File error, please try again.</Error> <FileSection addFile={addFile('manuscripts')} @@ -89,12 +90,11 @@ const Files = ({ title="Response to reviewers" /> )} - </div> + </Fragment> ) export default compose( getContext({ - version: PropTypes.object, project: PropTypes.object, }), withRouter, @@ -102,6 +102,7 @@ export default compose( (state, { project, version }) => ({ error: getFileError(state), isFetching: getRequestStatus(state), + version: selectCurrentVersion(state, project), isRevisionFlow: isRevisionFlow(state, project, version), }), { -- GitLab