Newer
Older
import React from 'react'
import { connect } from 'react-redux'
// import { required, minChars } from 'xpub-validators'
import { compose, withState, lifecycle } from 'recompose'
import { loginUser } from 'pubsweet-component-login/actions'
import { Button, H2, Spinner } from '@pubsweet/ui'
handleError,
withFetching,
} from 'pubsweet-component-faraday-ui'

Anca Ursachi
committed
import { redirectToError } from '../utils'
import { passwordValidator } from '../../../../component-faraday-ui/src/Utils'
import { reviewerDecision, setReviewerPassword } from '../../redux/reviewers'
import PasswordValidation from '../../../../component-faraday-ui/src/PasswordValidation'
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 ReviewerInviteDecision = ({
agree,
handleSubmit,
errorMessage,

Alexandru Munteanu
committed
reviewerEmail,
<ShadowedBox center mt={2} width={60}>
<H2>Reviewer Invitation</H2>
<Text align="center" secondary>
{reviewerEmail}
</Text>
<Row mt={2}>
<Text align="center">{agree === 'true' ? agreeText : declineText}</Text>
</Row>
<PasswordValidation formLabel="Password" formName="invite-reviewer" />
{fetchingError && (
<Row mt={2}>
<Text align="center" error>
{fetchingError}
</Text>
</Row>
<Row mt={2}>
{isFetching ? (
<Spinner />
) : (
<Button onClick={handleSubmit} primary size="medium">
CONFIRM
</Button>
)}
</Row>
</ShadowedBox>
)
export default compose(
withState('reviewerEmail', 'setEmail', ''),
connect(null, {
loginUser,
}),
lifecycle({
componentDidMount() {
const {
agree,
email,
fragmentId,
collectionId,
invitationId,
} = this.props
setEmail(email)
if (agree === 'false') {
reviewerDecision({
fragmentId,
agree: false,
collectionId,
invitationId,
}).catch(redirectToError(history.replace))
},
}),
reduxForm({
form: 'invite-reviewer',
onSubmit: (
{ password },
dispatch,
{
email,
token,
loginUser,
fragmentId,
collectionId,
invitationId,
) => {
setFetching(true)
setError('')
setReviewerPassword({
email,
token,
password,
})
.then(() => {
{
username: email,
password,
},
`/projects/${collectionId}/versions/${fragmentId}/details?agree=${true}&invitationId=${invitationId}`,
.catch(err => {
handleError(setError)(err)
)(ReviewerInviteDecision)