diff --git a/packages/component-faraday-ui/src/PublonsTable.js b/packages/component-faraday-ui/src/PublonsTable.js index 015f7e76e43306545f2b948944a96cb1c726db1a..13b395298181a88c645ebd7d27df94c3dfd30991 100644 --- a/packages/component-faraday-ui/src/PublonsTable.js +++ b/packages/component-faraday-ui/src/PublonsTable.js @@ -1,7 +1,7 @@ import React from 'react' import styled from 'styled-components' import { th } from '@pubsweet/ui-toolkit' -import { Button } from '@pubsweet/ui' +import { Button, Spinner } from '@pubsweet/ui' import { get } from 'lodash' import { compose, withHandlers, withProps } from 'recompose' @@ -12,8 +12,10 @@ const PublonsTable = ({ onInviteReviewer, setFetching, isFetching, + isPublonsFetching, }) => - reviewers.length > 0 && ( + (isPublonsFetching && <Spinner />) || + (reviewers.length > 0 && ( <Table> <thead> <tr> @@ -31,15 +33,15 @@ const PublonsTable = ({ </thead> <tbody> {reviewers.map(reviewer => ( - <TableRow key={reviewer.id}> + <TableRow key={reviewer.email}> <td> - <Text>{`${get(reviewer, 'publishingName', '')}`}</Text> + <Text>{`${get(reviewer, 'name', '')}`}</Text> </td> <td> - <Text>{`${get(reviewer, 'recentOrganizations.name', '')}`}</Text> + <Text>{`${get(reviewer, 'affiliation', '')}`}</Text> </td> <td> - <Text>{`${get(reviewer, 'numVerifiedReviews', '')}`}</Text> + <Text>{`${get(reviewer, 'reviews', '')}`}</Text> </td> <HiddenCell> <OpenModal @@ -50,7 +52,7 @@ const PublonsTable = ({ title="Send invitation to review?" > {showModal => ( - <Button onClick={showModal} secondary size="small"> + <Button onClick={showModal} primary size="small"> SEND </Button> )} @@ -60,7 +62,7 @@ const PublonsTable = ({ ))} </tbody> </Table> - ) + )) export default compose( withFetching, diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js index d37e18d643603014793260733f8510e433663e95..27658fcfcc4f852e281b2043612eda0dd5efa1b1 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js +++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js @@ -26,6 +26,7 @@ const ReviewerDetails = ({ fragment, invitations, publons, + isPublonsFetching, previewFile, downloadFile, canInviteReviewers, @@ -93,7 +94,10 @@ const ReviewerDetails = ({ {publons.length === 0 && ( <Text align="center">No suggestions yet.</Text> )} - <PublonsTable reviewers={publons} /> + <PublonsTable + isPublonsFetching={isPublonsFetching} + reviewers={publons} + /> </Fragment> )} {selectedTab === 2 && ( diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index d7418509783f4d241bb9fb5077156b7709b82f62..4eca664f9b5ae203a5d247fd1d01a584ba0dc5e3 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -57,6 +57,7 @@ const ManuscriptLayout = ({ toggleReviewerResponse, invitationsWithReviewers, publonReviewers, + isPublonsFetching, reviewerResponseExpanded, pendingOwnRecommendation, toggleReviewerRecommendations, @@ -178,6 +179,7 @@ const ManuscriptLayout = ({ fragment={fragment} getSignedUrl={getSignedUrl} invitations={invitationsWithReviewers} + isPublonsFetching={isPublonsFetching} journal={journal} onInvitePublonReviewer={onInvitePublonReviewer} onInviteReviewer={onInviteReviewer} diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index b92e0b9b87415a676936e41159367336bc5e3da4..1d28fc98bfb3c890629463f578c33bc3c5e3b65d 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -25,7 +25,6 @@ import { inviteReviewer, revokeReviewer, reviewerDecision, - getPublonReviewers, } from 'pubsweet-components-faraday/src/redux/reviewers' import { hasManuscriptFailure, @@ -55,7 +54,11 @@ import { getFragmentReviewerRecommendations, getInvitationsWithReviewersForFragment, } from 'pubsweet-component-faraday-selectors' -import { RemoteOpener, handleError } from 'pubsweet-component-faraday-ui' +import { + RemoteOpener, + handleError, + withFetching, +} from 'pubsweet-component-faraday-ui' import ManuscriptLayout from './ManuscriptLayout' import { parseEicDecision, parseSearchParams, redirectToError } from './utils' @@ -73,6 +76,7 @@ export default compose( setDisplayName('ManuscriptPage'), withJournal, withRouter, + withFetching, withState('publonReviewers', 'setPub', []), withState('editorInChief', 'setEiC', 'N/A'), ConnectPage(({ match }) => [ @@ -169,7 +173,6 @@ export default compose( state, get(fragment, 'id', ''), ), - publonReviewers: getPublonReviewers(get(fragment, 'id', '')), }), ), ConnectPage(({ currentUser }) => { @@ -417,12 +420,12 @@ export default compose( toggleReviewerRecommendations: toggle, reviewerRecommendationExpanded: expanded, })), - withProps(({ currentUser, submittedOwnRecommendation }) => ({ + withProps(({ currentUser, submittedOwnRecommendation, isFetching }) => ({ getSignedUrl, - publonReviewers: [], shouldReview: get(currentUser, 'isReviewer', false) && isUndefined(submittedOwnRecommendation), + isPublonFetching: isFetching, })), lifecycle({ componentDidMount() { @@ -436,12 +439,15 @@ export default compose( clearCustomError, hasManuscriptFailure, fetchUpdatedCollection, - currentUser: { isInvitedHE, isInvitedToReview }, - publonReviewers, + currentUser: { + isInvitedHE, + isInvitedToReview, + permissions: { canInviteReviewers }, + }, + setFetching, + isFetching, } = this.props - // publonReviewers.then(publons => console.log('PUBLONS', publons)) - if (hasManuscriptFailure) { history.push('/not-found') clearCustomError() @@ -461,11 +467,14 @@ export default compose( setEditorInChief(head(res.users)), ) - apiGet(`/fragments/${fragmentId}/publons`).then(res => { - if (!publonReviewers) { + if (canInviteReviewers) { + setFetching({ isFetching: true }) + console.log(isFetching) + apiGet(`/fragments/${fragmentId}/publons`).then(res => { + setFetching({ isFetching: false }) setPublons(res) - } - }) + }) + } if (isInvitedHE) { this.props.toggleHEResponse() diff --git a/packages/components-faraday/src/redux/reviewers.js b/packages/components-faraday/src/redux/reviewers.js index d17294f52a49541591c2f2e04610b53196e681f6..9d2ee9b6333822535652d83f30b1802a21a879df 100644 --- a/packages/components-faraday/src/redux/reviewers.js +++ b/packages/components-faraday/src/redux/reviewers.js @@ -57,9 +57,6 @@ export const getCollectionReviewers = (collectionId, fragmentId) => dispatch => apiGet( `/collections/${collectionId}/fragments/${fragmentId}/invitations?role=reviewer`, ) - -export const getPublonReviewers = fragmentId => - apiGet(`/fragments/${fragmentId}/publons`) // #endregion export const inviteReviewer = ({