Skip to content
Snippets Groups Projects
Commit 5fb53a68 authored by Alexandru Munteanu's avatar Alexandru Munteanu
Browse files

feat(eqs-decision): eqs decision email landing page

parent 26a90b19
No related branches found
No related tags found
2 merge requests!21Sprint #16 features,!16Eqs decision
import React from 'react'
import { isEmpty } from 'lodash'
import { Button } from '@pubsweet/ui'
import styled from 'styled-components'
import { th } from '@pubsweet/ui-toolkit'
import {
compose,
withState,
lifecycle,
withHandlers,
setDisplayName,
} from 'recompose'
import {
withModal,
ConfirmationModal,
} from 'pubsweet-component-modal/src/components'
import { Err, Subtitle } from './FormItems'
import { parseSearchParams } from '../utils'
const EQSDecisionPage = ({ id, eqsDecision, errorMessage, successMessage }) => (
<Root>
<Title>
Take a decision for manuscript <b>{id}</b>.
</Title>
{errorMessage && <Err>{errorMessage}</Err>}
{successMessage && <Subtitle>{successMessage}</Subtitle>}
{isEmpty(errorMessage) &&
isEmpty(successMessage) && (
<ButtonContainer>
<Button onClick={eqsDecision(false)}>REJECT</Button>
<Button onClick={eqsDecision(true)} primary>
ACCEPT
</Button>
</ButtonContainer>
)}
</Root>
)
export default compose(
setDisplayName('EQS Decision page'),
withModal(() => ({
modalComponent: ConfirmationModal,
})),
withState('id', 'setId', null),
withState('successMessage', 'setSuccess', ''),
withState('errorMessage', 'setError', ''),
lifecycle({
componentDidMount() {
const { location, setId } = this.props
const { customId } = parseSearchParams(location.search)
setId(customId)
},
}),
withHandlers({
eqsDecision: ({
setError,
showModal,
hideModal,
setSuccess,
}) => decision => () => {
showModal({
title: `Are you sure you want to ${
decision ? 'accept' : 'reject'
} this EQS package?`,
onConfirm: () => {
setSuccess('Manuscript accepted.')
hideModal()
},
onCancel: () => {
setError('There was an error. Please try again.')
hideModal()
},
})
},
}),
)(EQSDecisionPage)
// #region styles
const Root = styled.div`
align-items: center;
color: ${th('colorText')};
display: flex;
flex-direction: column;
justify-content: flex-start;
margin: 0 auto;
text-align: center;
width: 70vw;
a {
color: ${th('colorText')};
}
`
const Title = styled.div`
color: ${th('colorPrimary')};
font-size: ${th('fontSizeHeading5')};
font-family: ${th('fontHeading')};
margin: 10px auto;
`
const ButtonContainer = styled.div`
align-items: center;
display: flex;
justify-content: space-around;
padding: calc(${th('gridUnit')} / 2);
width: calc(${th('gridUnit')} * 15);
`
// #endregion
...@@ -7,5 +7,6 @@ export { default as NotFound } from './NotFound' ...@@ -7,5 +7,6 @@ export { default as NotFound } from './NotFound'
export { default as InfoPage } from './InfoPage' export { default as InfoPage } from './InfoPage'
export { default as ErrorPage } from './ErrorPage' export { default as ErrorPage } from './ErrorPage'
export { default as DateParser } from './DateParser' export { default as DateParser } from './DateParser'
export { default as EQSDecisionPage } from './EQSDecisionPage'
export { default as ConfirmationPage } from './ConfirmationPage' export { default as ConfirmationPage } from './ConfirmationPage'
export { default as BreadcrumbsHeader } from './BreadcrumbsHeader' export { default as BreadcrumbsHeader } from './BreadcrumbsHeader'
...@@ -15,6 +15,7 @@ import { ...@@ -15,6 +15,7 @@ import {
NotFound, NotFound,
InfoPage, InfoPage,
ErrorPage, ErrorPage,
EQSDecisionPage,
ConfirmationPage, ConfirmationPage,
} from 'pubsweet-components-faraday/src/components/UIComponents/' } from 'pubsweet-components-faraday/src/components/UIComponents/'
import { import {
...@@ -118,7 +119,7 @@ const Routes = () => ( ...@@ -118,7 +119,7 @@ const Routes = () => (
exact exact
path="/projects/:project/versions/:version/details" path="/projects/:project/versions/:version/details"
/> />
<Route component={EQSDecisionPage} exact path="/eqs-decision" />
<Route component={ErrorPage} exact path="/error-page" /> <Route component={ErrorPage} exact path="/error-page" />
<Route component={InfoPage} exact path="/info-page" /> <Route component={InfoPage} exact path="/info-page" />
<Route component={NotFound} /> <Route component={NotFound} />
......
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