diff --git a/packages/component-manuscript/src/components/ReviewerReportForm.js b/packages/component-manuscript/src/components/ReviewerReportForm.js index 11f97c4f179e4bd16e8e7eabcdfa646302023448..ea57788bd9a701628c868f09f676efc108ae2fcb 100644 --- a/packages/component-manuscript/src/components/ReviewerReportForm.js +++ b/packages/component-manuscript/src/components/ReviewerReportForm.js @@ -7,27 +7,27 @@ import styled, { css } from 'styled-components' import { th, Menu, - ValidatedField, Icon, Button, - ErrorText, Spinner, + ErrorText, + ValidatedField, } from '@pubsweet/ui' import { compose, withHandlers, withProps } from 'recompose' import { reduxForm, isSubmitting, - change as changeForm, getFormValues, + change as changeForm, } from 'redux-form' import AutosaveIndicator from 'pubsweet-component-wizard/src/components/AutosaveIndicator' import { uploadFile, deleteFile, + getFileError, getSignedUrl, getRequestStatus, - getFileError, } from 'pubsweet-components-faraday/src/redux/files' import { FileItem, @@ -35,8 +35,8 @@ import { } from 'pubsweet-components-faraday/src/components/Files' import { - ConfirmationModal, withModal2, + ConfirmationModal, } from 'pubsweet-component-modal/src/components' import { selectError, @@ -46,9 +46,9 @@ import { } from 'pubsweet-components-faraday/src/redux/recommendations' import { - parseReviewResponseToForm, onReviewSubmit, onReviewChange, + parseReviewResponseToForm, } from './utils' const guidelinesLink = diff --git a/packages/component-manuscript/src/components/ReviewsAndReports.js b/packages/component-manuscript/src/components/ReviewsAndReports.js index be8d50105f6bc8e2388a260040ebb66a744d0bde..9010bcba84833b0582e083bf9c9352602305ac16 100644 --- a/packages/component-manuscript/src/components/ReviewsAndReports.js +++ b/packages/component-manuscript/src/components/ReviewsAndReports.js @@ -87,6 +87,7 @@ const ReviewsAndReports = ({ <ReviewReportCard report={report} /> ) : ( <ReviewerReportForm + modalKey={`review-${project.id}`} project={project} review={review} version={version} diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index a1ca7295e2238f7c90058c8472c80fbfcabda8e2..f7fb17e8af9ca2a3c0bc8b48fe3cd630ad313222 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -4,7 +4,7 @@ import { connect } from 'react-redux' import PropTypes from 'prop-types' import { Button, Icon, th } from '@pubsweet/ui' import styled, { css, withTheme } from 'styled-components' -import { compose, getContext, withHandlers } from 'recompose' +import { compose, getContext, withHandlers, withProps } from 'recompose' import { withModal, ConfirmationModal, @@ -35,6 +35,7 @@ const DashboardCard = ({ showAbstractModal, canInviteReviewers, showConfirmationModal, + canMakeRecommendation, ...rest }) => { const { submitted, title, type } = parseVersion(version) @@ -59,7 +60,7 @@ const DashboardCard = ({ /> </LeftDetails> <RightDetails flex={2}> - {isHE && ( + {canMakeRecommendation && ( <Recommendation collectionId={project.id} fragmentId={version.id} @@ -165,6 +166,16 @@ const DashboardCard = ({ ) : null } +const isHEToManuscript = (state, collectionId) => { + const currentUserId = get(state, 'currentUser.user.id') + const collection = state.collections.find(c => c.id === collectionId) || {} + const userInvitation = collection.invitations.find( + i => i.role === 'handlingEditor' && i.userId === currentUserId, + ) + + return userInvitation ? userInvitation.isAccepted : false +} + export default compose( getContext({ journal: PropTypes.object, currentUser: PropTypes.object }), withTheme, @@ -175,6 +186,11 @@ export default compose( connect((state, { project }) => ({ isHE: currentUserIs(state, 'handlingEditor'), invitation: selectInvitation(state, project.id), + isHEToManuscript: isHEToManuscript(state, project.id), + })), + withProps(({ isHEToManuscript, project }) => ({ + canMakeRecommendation: + isHEToManuscript && get(project, 'status') === 'reviewCompleted', })), withHandlers({ canInviteReviewers: ({ currentUser, project }) => () => { diff --git a/packages/components-faraday/src/components/Invitations/ReviewerBreakdown.js b/packages/components-faraday/src/components/Invitations/ReviewerBreakdown.js index 58721de0ca53054b0721ce0b874960e8d6c476f2..2415e9a83e83d65d8401e23c84e8d194a1fa369e 100644 --- a/packages/components-faraday/src/components/Invitations/ReviewerBreakdown.js +++ b/packages/components-faraday/src/components/Invitations/ReviewerBreakdown.js @@ -1,9 +1,9 @@ import React from 'react' import { th } from '@pubsweet/ui' import { connect } from 'react-redux' -import { selectFragment, selectCollection } from 'xpub-selectors' import styled, { css } from 'styled-components' import { compose, withHandlers } from 'recompose' +import { selectFragment, selectCollection } from 'xpub-selectors' import { selectReviewers } from 'pubsweet-components-faraday/src/redux/reviewers' const ReviewerBreakdown = ({ @@ -58,7 +58,7 @@ export default compose( <BreakdownText> <b>{reviewers.length}</b> invited, <b> {report.accepted}</b> agreed, - <b> {report.declined}</b> declined + <b> {report.declined}</b> declined, <b> {report.submitted}</b> submitted </BreakdownText> ) diff --git a/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js b/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js index 350156cab985ab5998de27d641e6469f4cbed9b5..e6c32a0804178d143311a24758fa323942205e14 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js +++ b/packages/components-faraday/src/components/MakeRecommendation/RecommendWizard.js @@ -19,20 +19,20 @@ const RecommendWizard = ({ decision, nextStep, prevStep, - hideModal, + closeModal, submitForm, isFetching, recommendationError, ...rest }) => ( <FormItems.RootContainer> - <IconButton onClick={hideModal}> + <IconButton onClick={closeModal}> <Icon primary>x</Icon> </IconButton> {step === 0 && ( <StepOne disabled={!decision} - hideModal={hideModal} + hideModal={closeModal} onSubmit={nextStep} {...rest} /> @@ -65,6 +65,10 @@ export default compose( withHandlers({ nextStep: ({ changeStep }) => () => changeStep(s => s + 1), prevStep: ({ changeStep }) => () => changeStep(s => (s === 0 ? 0 : s - 1)), + closeModal: ({ hideModal, resetForm }) => () => { + hideModal() + resetForm('recommendation') + }, submitForm: ({ showModal, hideModal,