Skip to content
Snippets Groups Projects
ReviewPage.jsx 1.29 KiB
Newer Older
import React from 'react'
ahamelers's avatar
ahamelers committed
import { Query } from 'react-apollo'
ahamelers's avatar
ahamelers committed
import { Page, Loading, LoadingIcon } from '../ui'
ahamelers's avatar
ahamelers committed
import { GET_MANUSCRIPT } from '../operations'
Audrey Hamelers's avatar
Audrey Hamelers committed
import SubmissionHeader from '../SubmissionHeader'
ahamelers's avatar
ahamelers committed
import Review from './Review'
import { CURRENT_REVIEW } from './operations'
Audrey Hamelers's avatar
Audrey Hamelers committed

const ReviewWithHeader = SubmissionHeader(Review)

const ReviewPage = ({ match, ...props }) => (
  <Query
    fetchPolicy="cache-and-network"
    query={GET_MANUSCRIPT}
    variables={{ id: match.params.id }}
  >
    {({ data: { manuscript }, loading: loadingOne }) => (
ahamelers's avatar
ahamelers committed
      <Query
        query={CURRENT_REVIEW}
        variables={{ manuscriptId: match.params.id }}
      >
        {({ data: { currentReview }, loading, refetch }) => {
          if (loadingOne || !manuscript) {
            return (
ahamelers's avatar
ahamelers committed
              <Page>
                <Loading>
                  <LoadingIcon />
                </Loading>
              </Page>
            )
          }
          return (
            <ReviewWithHeader
              key={`${manuscript.id}${manuscript.status}`}
              manuscript={manuscript}
              match={match}
              reload={() => refetch()}
ahamelers's avatar
ahamelers committed
              review={currentReview}
              {...props}
            />
          )
        }}
      </Query>
    )}
Audrey Hamelers's avatar
Audrey Hamelers committed
  </Query>
)

export default ReviewPage