diff --git a/packages/component-manuscript/src/components/ManuscriptVersion.js b/packages/component-manuscript/src/components/ManuscriptVersion.js index ddad835f7ccda0f60b9f15923105b039f3151d40..2ecebdcd8a4a4804f89d632273270a9233a4e353 100644 --- a/packages/component-manuscript/src/components/ManuscriptVersion.js +++ b/packages/component-manuscript/src/components/ManuscriptVersion.js @@ -8,7 +8,7 @@ import { withRouter } from 'react-router-dom' import { parseVersionOptions } from './utils' -const ManuscriptVersion = ({ project, fragments, history, match }) => ( +const ManuscriptVersion = ({ project, fragments = [], history, match }) => ( <Menu inline onChange={v => diff --git a/packages/component-manuscript/src/components/ReviewerReportForm.js b/packages/component-manuscript/src/components/ReviewerReportForm.js index 3f8fe374cb496a6363c9657bc576a1a51f2ec3ad..a773c484f2a216dfa7da1a76c407a0ed5590e097 100644 --- a/packages/component-manuscript/src/components/ReviewerReportForm.js +++ b/packages/component-manuscript/src/components/ReviewerReportForm.js @@ -1,8 +1,17 @@ import React, { Fragment } from 'react' import { connect } from 'react-redux' import { required } from 'xpub-validators' +import { withJournal } from 'xpub-journal' import styled, { css } from 'styled-components' -import { th, Menu, ValidatedField, Icon, Button, ErrorText } from '@pubsweet/ui' +import { + th, + Menu, + ValidatedField, + Icon, + Button, + ErrorText, + Spinner, +} from '@pubsweet/ui' import { compose, withHandlers, withProps } from 'recompose' import { reduxForm, @@ -16,6 +25,8 @@ import { uploadFile, deleteFile, getSignedUrl, + getRequestStatus, + getFileError, } from 'pubsweet-components-faraday/src/redux/files' import { FileItem, @@ -41,27 +52,9 @@ import { const guidelinesLink = 'https://about.hindawi.com/authors/peer-review-at-hindawi/' -const options = [ - { - value: 'publish', - label: 'Publish unaltered', - }, - { - value: 'major', - label: 'Consider after major revision', - }, - { - value: 'minor', - label: 'Consider after major revision', - }, - { - value: 'reject', - label: 'Reject', - }, -] const ReviewerReportForm = ({ - error, + errorRequest, isSubmitting, changeField, handleSubmit, @@ -70,6 +63,9 @@ const ReviewerReportForm = ({ addFile, removeFile, previewFile, + fileFetching, + fileError, + journal: { recommendations }, }) => ( <Root> <Row> @@ -85,7 +81,7 @@ const ReviewerReportForm = ({ {...input} inline onChange={v => changeField('recommendation', v)} - options={options} + options={recommendations} placeholder="Select" /> )} @@ -96,12 +92,16 @@ const ReviewerReportForm = ({ <Spacing /> <Row left> <Label>Report</Label> - <FilePicker - allowedFileExtensions={['pdf', 'doc', 'docx']} - onUpload={addFile} - > - <ActionText left={12}>Upload file</ActionText> - </FilePicker> + {!fileFetching.review ? ( + <FilePicker + allowedFileExtensions={['pdf', 'doc', 'docx']} + onUpload={addFile} + > + <ActionText left={12}>Upload file</ActionText> + </FilePicker> + ) : ( + <Spinner size={2} /> + )} </Row> <Row> <FullWidth> @@ -115,12 +115,12 @@ const ReviewerReportForm = ({ /> )} name="public" - validate={[required]} + validate={[]} /> </FullWidth> </Row> {formValues.files && ( - <Row> + <Row left> {formValues.files.map(file => ( <FileItem compact @@ -173,9 +173,14 @@ const ReviewerReportForm = ({ )} <Spacing /> - {error && ( + {fileError && ( + <Row> + <ErrorText>{fileError}</ErrorText> + </Row> + )} + {errorRequest && ( <Row> - <ErrorText>{error}</ErrorText> + <ErrorText>{errorRequest}</ErrorText> </Row> )} <Row> @@ -198,10 +203,14 @@ const ModalWrapper = compose( )) export default compose( + withJournal, connect( state => ({ formValues: getFormValues('reviewerReport')(state), isSubmitting: isSubmitting('reviewerReport')(state), + errorRequest: selectError(state), + fileFetching: getRequestStatus(state), + fileError: getFileError(state), }), { changeForm, diff --git a/packages/component-manuscript/src/components/utils.js b/packages/component-manuscript/src/components/utils.js index d6411a9a3b7e81a4d4cf42123d6729c7426e533f..6eb1902ca41ec81875e497ee9b23e10833941e3e 100644 --- a/packages/component-manuscript/src/components/utils.js +++ b/packages/component-manuscript/src/components/utils.js @@ -4,6 +4,7 @@ import { get, find, capitalize, omit, isEmpty, isEqual, debounce } from 'lodash' import { autosaveRequest, autosaveSuccess, + autosaveFailure, } from 'pubsweet-component-wizard/src/redux/autosave' export const parseTitle = version => { @@ -105,7 +106,7 @@ export const parseReviewRequest = (review = {}) => { const comments = [ { public: true, - content: review.public || '', + content: review.public || undefined, files: review.files || [], }, ] @@ -113,7 +114,7 @@ export const parseReviewRequest = (review = {}) => { if (review.hasConfidential) { comments.push({ public: false, - content: review.confidential, + content: review.confidential || undefined, files: [], }) } @@ -142,13 +143,13 @@ const onChange = ( if (!isEqual(newValues, prevValues) && !isEmpty(prevValues)) { dispatch(autosaveRequest()) if (newValues.id) { - updateRecommendation(project.id, version.id, newValues).then(r => - dispatch(autosaveSuccess(r.updatedOn)), - ) + updateRecommendation(project.id, version.id, newValues) + .then(r => dispatch(autosaveSuccess(r.updatedOn))) + .catch(e => dispatch(autosaveFailure(e))) } else { - createRecommendation(project.id, version.id, newValues).then(r => - dispatch(autosaveSuccess(r.updatedOn)), - ) + createRecommendation(project.id, version.id, newValues) + .then(r => dispatch(autosaveSuccess(r.updatedOn))) + .catch(e => dispatch(autosaveFailure(e))) } } } diff --git a/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js b/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js index 914a4dfcca191c2b1ed317f2f5c9e17a1d17865d..6ea7ce628dcb2b18814516a475b369850b6071c0 100644 --- a/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js +++ b/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js @@ -21,7 +21,7 @@ const renderHE = (currentUser, project) => { return <HandlingEditorActions currentUser={currentUser} project={project} /> } - return <AssignedHE>{get(handlingEditor, 'name')}</AssignedHE> + return <AssignedHE>{get(handlingEditor, 'name') || 'N/A'}</AssignedHE> } const HandlingEditorSection = ({ currentUser, project }) => ( diff --git a/packages/components-faraday/src/components/Files/FileItem.js b/packages/components-faraday/src/components/Files/FileItem.js index 960781cb067ec9d5228709508a714466067b1cc0..e9676fb02d4ad3587338ff3d01c54b65c055abaa 100644 --- a/packages/components-faraday/src/components/Files/FileItem.js +++ b/packages/components-faraday/src/components/Files/FileItem.js @@ -57,7 +57,7 @@ const FileItem = ({ {removeFile && ( <IconButton onClick={removeFile(id)}> <Icon primary size={3}> - trash-2 + x </Icon> </IconButton> )} @@ -101,7 +101,7 @@ const Root = styled.div` align-items: center; border: ${th('borderDefault')}; display: flex; - margin: 5px; + margin: ${th('subGridUnit')}; ` const Info = styled.div` @@ -116,7 +116,7 @@ const Buttons = styled.div` align-items: center; display: flex; justify-content: center; - margin: 0 10px; + margin: 0 calc(${th('subGridUnit')}*2); a { align-items: center; @@ -159,6 +159,7 @@ const FileRoot = styled.div` display: flex; flex-direction: row; margin-bottom: ${th('subGridUnit')}; + margin-right: ${th('subGridUnit')}; padding: ${th('subGridUnit')}; ` // #endregion diff --git a/packages/components-faraday/src/redux/recommendations.js b/packages/components-faraday/src/redux/recommendations.js index 38c278451bf32d80663a10ed55863b6341739b12..a86bfc4758accc0282602783c5927db65940cd0b 100644 --- a/packages/components-faraday/src/redux/recommendations.js +++ b/packages/components-faraday/src/redux/recommendations.js @@ -1,5 +1,4 @@ import { get } from 'lodash' -import { SubmissionError } from 'redux-form' import { create, update } from 'pubsweet-client/src/helpers/api' const REQUEST = 'recommendations/REQUEST' @@ -61,9 +60,6 @@ export const createRecommendation = ( if (error) { const errorMessage = get(JSON.parse(error), 'error') dispatch(recommendationsError(errorMessage)) - throw new SubmissionError({ - _error: errorMessage || 'Something went wrong', - }) } }, ) @@ -90,9 +86,6 @@ export const updateRecommendation = ( if (error) { const errorMessage = get(JSON.parse(error), 'error') dispatch(recommendationsError(errorMessage)) - throw new SubmissionError({ - _error: errorMessage || 'Something went wrong', - }) } }, ) diff --git a/packages/xpub-faraday/app/config/journal/recommendations.js b/packages/xpub-faraday/app/config/journal/recommendations.js index f65e0d670ba866846f46282045eb2225dde91878..4bcc3ff06eb99a2a2c4a184933b5ec0956f8f3db 100644 --- a/packages/xpub-faraday/app/config/journal/recommendations.js +++ b/packages/xpub-faraday/app/config/journal/recommendations.js @@ -1,17 +1,18 @@ export default [ { - color: 'green', - label: 'Accept', - value: 'accept', + value: 'publish', + label: 'Publish unaltered', }, { - color: 'orange', - label: 'Revise', - value: 'revise', + value: 'major', + label: 'Consider after major revision', + }, + { + value: 'minor', + label: 'Consider after major revision', }, { - color: 'red', - label: 'Reject', value: 'reject', + label: 'Reject', }, ]