Skip to content
Snippets Groups Projects
Commit da9acc79 authored by Sebastian's avatar Sebastian
Browse files

Merge branch 'develop' of gitlab.coko.foundation:xpub/xpub-faraday into develop

parents c185d9aa 481cc12e
No related branches found
No related tags found
1 merge request!6Agree/Decline to work on a manuscript
import React from 'react'
import { connect } from 'react-redux'
import { compose, lifecycle } from 'recompose'
import { reviewerDecline } from '../../redux/reviewers'
const ReviewerDecline = props => <div>I decline textul de la Matt</div>
export default compose(
connect(null, { reviewerDecline }),
lifecycle({
componentDidMount() {
const {
collectionId,
invitationId,
invitationToken,
reviewerDecline,
} = this.props
reviewerDecline(invitationId, collectionId, invitationToken)
},
}),
)(ReviewerDecline)
import React from 'react'
import { get } from 'lodash'
import { connect } from 'react-redux'
import { reduxForm, SubmissionError } from 'redux-form'
import { push } from 'react-router-redux'
import { required, minChars } from 'xpub-validators'
import { compose, withState, lifecycle } from 'recompose'
import { loginUser } from 'pubsweet-component-login/actions'
import { Button, ValidatedField, TextField } from '@pubsweet/ui'
import {
Row,
Err,
Title,
Label,
Email,
RowItem,
Subtitle,
RootContainer,
FormContainer,
} from './FormItems'
import { reviewerDecision, setReviewerPassword } from '../../redux/reviewers'
const agreeText = `You have been invited to review a manuscript on the Hindawi platform. Please set a password and proceed to the manuscript.`
const declineText = `You have decline to work on a manuscript.`
const min8Chars = minChars(8)
const ReviewerInviteDecision = ({
handleSubmit,
error,
reviewerEmail,
agree,
}) => (
<RootContainer>
<Title>Hindawi Invitation</Title>
<Subtitle>{agree === 'true' ? agreeText : declineText}</Subtitle>
<Email>{reviewerEmail}</Email>
{agree === 'true' && (
<FormContainer onSubmit={handleSubmit}>
<Row>
<RowItem>
<Label> Password </Label>
<ValidatedField
component={input => <TextField {...input} type="password" />}
name="password"
validate={[required, min8Chars]}
/>
</RowItem>
</Row>
{error && (
<Row>
<RowItem>
<Err>Token expired or Something went wrong.</Err>
</RowItem>
</Row>
)}
<Row>
<Button primary type="submit">
CONFIRM
</Button>
</Row>
</FormContainer>
)}
{agree === 'false' && <div>nu i-a placut</div>}
</RootContainer>
)
export default compose(
withState('reviewerEmail', 'setEmail', ''),
connect(null, { push, loginUser, setReviewerPassword, reviewerDecision }),
lifecycle({
componentDidMount() {
const {
agree,
email,
setEmail,
collectionId,
invitationId,
reviewerDecision,
} = this.props
setEmail(email)
if (agree === 'false') {
reviewerDecision(invitationId, collectionId, false)
}
},
}),
reduxForm({
form: 'invite-reviewer',
onSubmit: (
{ password },
dispatch,
{
push,
email,
token,
location,
loginUser,
fragmentId,
collectionId,
invitationId,
setReviewerPassword,
},
) =>
setReviewerPassword({
email,
token,
password,
})
.then(() => {
loginUser(
{ username: email, password },
`/projects/${collectionId}/versions/${fragmentId}/details?agree=${true}&invitationId=${invitationId}`,
)
})
.catch(error => {
const err = get(error, 'response')
if (err) {
const errorMessage = get(JSON.parse(err), 'error')
throw new SubmissionError({
_error: errorMessage || 'Something went wrong',
})
}
}),
}),
)(ReviewerInviteDecision)
import React from 'react' import React from 'react'
import { get } from 'lodash' import { isEmpty } from 'lodash'
import { connect } from 'react-redux' import { Route } from 'react-router-dom'
import { reduxForm, SubmissionError } from 'redux-form' import { AuthenticatedComponent } from 'pubsweet-client'
import { push } from 'react-router-redux'
import { required, minChars } from 'xpub-validators'
import { compose, withState, lifecycle } from 'recompose'
import { loginUser } from 'pubsweet-component-login/actions'
import { Button, ValidatedField, TextField } from '@pubsweet/ui'
import { import { ReviewerInviteDecision, ReviewerDecline } from './'
Row,
Err,
Title,
Label,
Email,
RowItem,
Subtitle,
RootContainer,
FormContainer,
} from './FormItems'
import { parseSearchParams } from './utils' import { parseSearchParams } from './utils'
import { reviewerDecision, setReviewerPassword } from '../../redux/reviewers'
const agreeText = `You have been invited to review a manuscript on the Hindawi platform. Please set a password and proceed to the manuscript.` const PrivateRoute = ({ component: Component, token, ...rest }) => (
const declineText = `You have decline to work on a manuscript.` <Route
render={props =>
const min8Chars = minChars(8) isEmpty(token) ? (
const ReviewerSignUp = ({ <AuthenticatedComponent>
searchParams: { agree }, <Component {...props} {...rest} />
handleSubmit, </AuthenticatedComponent>
error, ) : (
reviewer, <Component {...props} {...rest} token={token} />
}) => ( )
<RootContainer> }
<Title>Hindawi Invitation</Title> />
<Subtitle>{agree ? agreeText : declineText}</Subtitle>
<Email>{reviewer.email}</Email>
{agree && (
<FormContainer onSubmit={handleSubmit}>
<Row>
<RowItem>
<Label> Password </Label>
<ValidatedField
component={input => <TextField {...input} type="password" />}
name="password"
validate={[required, min8Chars]}
/>
</RowItem>
</Row>
{error && (
<Row>
<RowItem>
<Err>Token expired or Something went wrong.</Err>
</RowItem>
</Row>
)}
<Row>
<Button primary type="submit">
CONFIRM
</Button>
</Row>
</FormContainer>
)}
</RootContainer>
) )
export default compose( const ReviewerSignUp = ({ location }) => {
withState('searchParams', 'setParams', { agree: true }), const { invitationToken, ...rest } = parseSearchParams(location.search)
withState('reviewer', 'setReviewer', {}), return isEmpty(invitationToken) ? (
connect(null, { push, loginUser, setReviewerPassword, reviewerDecision }), <PrivateRoute component={ReviewerInviteDecision} {...rest} />
lifecycle({ ) : (
componentDidMount() { <Route
const { setParams, location, setReviewer, reviewerDecision } = this.props component={props => (
const { <ReviewerDecline
agree, {...props}
collectionId, invitationToken={invitationToken}
invitationId, {...rest}
fragmentId, />
...reviewerBody )}
} = parseSearchParams(location.search) />
setParams(v => ({ )
agree: agree === 'true', }
collectionId,
invitationId,
fragmentId,
}))
if (agree === 'true') { export default ReviewerSignUp
setReviewer(reviewerBody)
} else {
reviewerDecision(invitationId, collectionId, false)
}
},
}),
reduxForm({
form: 'invite-reviewer',
onSubmit: (
{ password },
dispatch,
{
push,
loginUser,
searchParams,
reviewer,
location,
setReviewerPassword,
},
) => {
const { collectionId, fragmentId, agree, invitationId } = searchParams
return setReviewerPassword({
...reviewer,
password,
})
.then(() => {
loginUser(
{ username: reviewer.email, password },
`/projects/${collectionId}/versions/${fragmentId}/details?agree=${agree}&invitationId=${invitationId}`,
)
})
.catch(error => {
const err = get(error, 'response')
if (err) {
const errorMessage = get(JSON.parse(err), 'error')
throw new SubmissionError({
_error: errorMessage || 'Something went wrong',
})
}
})
},
}),
)(ReviewerSignUp)
export { default as ReviewerSignUp } from './ReviewerSignUp' export { default as ReviewerSignUp } from './ReviewerSignUp'
export { default as ReviewerDecline } from './ReviewerDecline'
export { default as SignUpInvitationPage } from './SignUpInvitationPage' export { default as SignUpInvitationPage } from './SignUpInvitationPage'
export { default as ReviewerInviteDecision } from './ReviewerInviteDecision'
...@@ -132,7 +132,30 @@ export const reviewerDecision = ( ...@@ -132,7 +132,30 @@ export const reviewerDecision = (
}, },
err => { err => {
dispatch(reviewerDecisionError(err.message)) dispatch(reviewerDecisionError(err.message))
return err throw err
},
)
}
export const reviewerDecline = (
invitationId,
collectionId,
invitationToken,
) => dispatch => {
dispatch(reviewerDecisionRequest())
return update(
`/collections/${collectionId}/invitations/${invitationId}/decline`,
{
invitationToken,
},
).then(
res => {
dispatch(reviewerDecisionSuccess())
return res
},
err => {
dispatch(reviewerDecisionError(err.message))
throw err
}, },
) )
} }
......
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