From ac3571c47856bdb996d4680eb6ff6c95cd53d9eb Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munt@gmail.com> Date: Wed, 11 Jul 2018 15:46:01 +0300 Subject: [PATCH] feat(submit-revision): update make revision selector --- .../component-faraday-selectors/src/index.js | 1 + .../src/components/ManuscriptLayout.js | 3 +- .../src/components/ManuscriptPage.js | 4 ++ .../src/components/SideBarActions.js | 2 +- .../src/components/utils.js | 44 +++++++++++++------ 5 files changed, 38 insertions(+), 16 deletions(-) diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 95f9a5b80..d95643452 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -75,6 +75,7 @@ export const canSeeReviewersReports = (state, collectionId) => { export const canMakeRevision = (state, collection, fragment) => { const currentUserId = get(state, 'currentUser.user.id') return ( + get(fragment, 'revision') && collection.status === 'revisionRequested' && fragment.owners.map(o => o.id).includes(currentUserId) ) diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index 318822b55..ea90b8396 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -27,6 +27,7 @@ const ManuscriptLayout = ({ history, currentUser, editorInChief, + canMakeRevision, editorialRecommendations, project = {}, version = {}, @@ -56,7 +57,7 @@ const ManuscriptLayout = ({ fragment={version} startExpanded={isEmpty(version.revision)} /> - {version.revision && ( + {canMakeRevision && ( <SubmitRevision project={project} version={version} /> )} <ReviewsAndReports project={project} version={version} /> diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index a832022fd..b6ff4faa6 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -29,6 +29,7 @@ import { getHandlingEditors, selectHandlingEditors, } from 'pubsweet-components-faraday/src/redux/editors' +import { canMakeRevision } from 'pubsweet-component-faraday-selectors/src' import ManuscriptLayout from './ManuscriptLayout' import { parseSearchParams, redirectToError } from './utils' @@ -64,6 +65,9 @@ export default compose( updateVersion: actions.updateFragment, }, ), + connect((state, { project, version }) => ({ + canMakeRevision: canMakeRevision(state, project, version), + })), ConnectPage(({ currentUser, handlingEditors, project }) => { const he = get(project, 'handlingEditor') if ( diff --git a/packages/component-manuscript/src/components/SideBarActions.js b/packages/component-manuscript/src/components/SideBarActions.js index 76a9369e7..7f1f8c4c7 100644 --- a/packages/component-manuscript/src/components/SideBarActions.js +++ b/packages/component-manuscript/src/components/SideBarActions.js @@ -17,7 +17,7 @@ import { canMakeRevision, canMakeDecision, canMakeRecommendation, -} from '../../../component-faraday-selectors' +} from 'pubsweet-component-faraday-selectors/src' const SideBarActions = ({ project, diff --git a/packages/component-manuscript/src/components/utils.js b/packages/component-manuscript/src/components/utils.js index 2f7a3b538..1accaf54c 100644 --- a/packages/component-manuscript/src/components/utils.js +++ b/packages/component-manuscript/src/components/utils.js @@ -1,5 +1,14 @@ import moment from 'moment' -import { get, find, capitalize, omit, isEmpty, debounce } from 'lodash' +import { + get, + find, + omit, + chain, + merge, + isEmpty, + debounce, + capitalize, +} from 'lodash' import { actions } from 'pubsweet-client/src' import { change as changeForm } from 'redux-form' @@ -187,14 +196,23 @@ export const onReviewSubmit = ( }) } +const parseRevision = (values, fragment) => { + const v = chain(values) + .omit('authorForm') + .omit(v => v === '') + .value() + + return { + ...fragment, + revision: { + ...v, + metadata: merge(v.metadata, fragment.metadata), + }, + } +} + const _onRevisionChange = (values, dispatch, { project, version }) => { - const newValues = omit(values, 'authorForm') - dispatch( - actions.updateFragment(project, { - ...version, - revision: newValues, - }), - ) + dispatch(actions.updateFragment(project, parseRevision(values, version))) } export const onRevisionChange = debounce(_onRevisionChange, 1000, { maxWait: 5000, @@ -219,12 +237,10 @@ export const onRevisionSubmit = ( onConfirm: () => { submitRevision(project.id, version.id) .then(r => { - dispatch(actions.getFragments({ id: project.id })) - return r - }) - .then(r => { - history.push(`/projects/${r.collectionId}/version/${r.id}/details`) - hideModal() + dispatch(actions.getFragments({ id: project.id })).then(() => { + history.push(`/projects/${r.collectionId}/versions/${r.id}/details`) + hideModal() + }) }) .catch(e => setModalError('Something went wrong.')) }, -- GitLab