Skip to content
Snippets Groups Projects
Commit 6a1e5f50 authored by Alf Eaton's avatar Alf Eaton
Browse files

Fix manuscript saving

parent 63931279
No related branches found
No related tags found
No related merge requests found
......@@ -22,11 +22,12 @@ export default compose(
},
{
fileUpload: actions.fileUpload,
updateVersion: actions.updateFragment
}
),
withHandlers({
updateManuscript: ({ project, version }) => data => {
return actions.updateFragment(project, {
updateManuscript: ({ updateVersion, project, version }) => data => {
return updateVersion(project, {
id: version.id,
...data
})
......
......@@ -24,6 +24,7 @@
"redux": "^3.6.0",
"redux-form": "^7.0.3",
"striptags": "^3.1.0",
"uuid": "^3.1.0",
"wax-editor-react": "^0.0.5",
"xpub-connect": "^0.0.2",
"xpub-edit": "^0.0.2",
......
......@@ -20,7 +20,7 @@ export default compose(
(state, ownProps) => {
const project = selectCollection(state, ownProps.params.project)
const version = selectFragment(state, ownProps.params.version)
const reviewers = version.reviewers
const reviewers = version.reviewers.filter(reviewer => reviewer.reviewer)
const reviewerUsers = state.users.users
// const reviewerUsers = filter(state.users.users, { reviewer: true })
......@@ -28,16 +28,14 @@ export default compose(
// populate the reviewer user
reviewers.forEach(reviewer => {
const projectReviewer = find(project.reviewers, {
user: reviewer.user
id: reviewer.reviewer
})
if (projectReviewer) {
reviewer._user = find(reviewerUsers, {
id: projectReviewer.user
})
reviewer._user = find(reviewerUsers, {
id: projectReviewer.user
})
reviewer._reviewer = projectReviewer
}
reviewer._reviewer = projectReviewer
})
return { project, version, reviewers, reviewerUsers }
......
import uuid from 'uuid'
import { find, some } from 'lodash'
import { compose, withHandlers } from 'recompose'
import { reduxForm, SubmissionError } from 'redux-form'
......@@ -6,13 +7,15 @@ import { actions } from 'pubsweet-client'
import ReviewerForm from './ReviewerForm'
const getProjectReviewer = (props, user) => {
const reviewer = find(props.project.reviewers, { user: user.id })
// const reviewer = find(props.project.reviewers, { user: user.id })
const reviewer = null
return reviewer ? Promise.resolve(reviewer) : addProjectReviewer(props, user)
}
const addProjectReviewer = (props, user) => {
const reviewer = {
id: uuid(),
user: user.id
}
......@@ -22,9 +25,9 @@ const addProjectReviewer = (props, user) => {
}).then(() => reviewer)
}
const addReviewer = (props, reviewer) => {
const review = {
reviewer: reviewer.id,
const addReviewer = (props, projectReviewer) => {
const reviewer = {
reviewer: projectReviewer.id,
status: 'invited',
events: {
invited: (new Date()).toString()
......@@ -33,19 +36,19 @@ const addReviewer = (props, reviewer) => {
return props.updateVersion(props.project, {
id: props.version.id,
reviewers: (props.version.reviewers || []).concat(review)
}).then(() => review)
reviewers: (props.version.reviewers || []).concat(reviewer)
}).then(() => reviewer)
}
const handleSubmit = props => reset => values => {
// TODO: create a user account if values.user.id is null
return getProjectReviewer(props, values.user).then(reviewer => {
if (some(props.version.reviewers, { reviewer: reviewer.id })) {
return getProjectReviewer(props, values.user).then(projectReviewer => {
if (some(props.version.reviewers, { reviewer: projectReviewer.id })) {
throw new SubmissionError('This reviewer has already been added')
}
return addReviewer(props, reviewer)
return addReviewer(props, projectReviewer)
}).then(() => reset())
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment