@@ -11,11 +11,13 @@ import { useHistory } from 'react-router-dom';
1111import { NERButton } from '../../components/NERButton' ;
1212import { useRequestCRReview } from '../../hooks/change-requests.hooks' ;
1313import { useToast } from '../../hooks/toasts.hooks' ;
14- import { useCurrentUser } from '../../hooks/users.hooks' ;
14+ import { useCurrentUser , useAllUsers } from '../../hooks/users.hooks' ;
1515import { projectWbsPipe } from '../../utils/pipes' ;
1616import { routes } from '../../utils/routes' ;
1717import { userToAutocompleteOption } from '../../utils/task.utils' ;
1818import { useState } from 'react' ;
19+ import ErrorPage from '../ErrorPage' ;
20+ import LoadingIndicator from '../../components/LoadingIndicator' ;
1921
2022interface ChangeRequestActionMenuProps {
2123 isUserAllowedToReview : boolean ;
@@ -24,7 +26,6 @@ interface ChangeRequestActionMenuProps {
2426 changeRequest : ChangeRequest ;
2527 handleReviewOpen : ( ) => void ;
2628 handleDeleteOpen : ( ) => void ;
27- users : User [ ] ;
2829}
2930
3031const ChangeRequestActionMenu : React . FC < ChangeRequestActionMenuProps > = ( {
@@ -33,35 +34,36 @@ const ChangeRequestActionMenu: React.FC<ChangeRequestActionMenuProps> = ({
3334 isUserAllowedToDelete,
3435 changeRequest,
3536 handleReviewOpen,
36- handleDeleteOpen,
37- users
37+ handleDeleteOpen
3838} : ChangeRequestActionMenuProps ) => {
3939 const { mutateAsync : requestCRReview } = useRequestCRReview ( changeRequest . crId . toString ( ) ) ;
4040 const toast = useToast ( ) ;
4141 const currentUser = useCurrentUser ( ) ;
4242 const history = useHistory ( ) ;
4343 const [ reviewerIds , setReviewerIds ] = useState < number [ ] > ( [ ] ) ;
44-
44+ const { data : users , isLoading : isLoadingAllUsers , isError : isErrorAllUsers , error : errorAllUsers } = useAllUsers ( ) ;
45+ if ( isErrorAllUsers ) return < ErrorPage message = { errorAllUsers ?. message } /> ;
46+ if ( isLoadingAllUsers || ! users ) return < LoadingIndicator /> ;
4547 const handleRequestReviewerClick = async ( ) => {
4648 if ( reviewerIds . length === 0 ) {
4749 toast . error ( 'Must select at least one reviewer to request review from' ) ;
48- return ;
49- }
50- try {
51- await requestCRReview ( { userIds : reviewerIds } ) ;
52- } catch ( e ) {
53- if ( e instanceof Error ) {
54- toast . error ( e . message ) ;
50+ } else {
51+ try {
52+ await requestCRReview ( { userIds : reviewerIds } ) ;
53+ } catch ( e ) {
54+ if ( e instanceof Error ) {
55+ toast . error ( e . message ) ;
56+ }
5557 }
5658 }
5759 } ;
5860
59- const isRequestAllowed = changeRequest . submitter . userId === currentUser . userId ;
61+ const isRequestAllowed =
62+ changeRequest . submitter . userId === currentUser . userId && changeRequest . status === ChangeRequestStatus . Open ;
6063
6164 const UnreviewedActionsDropdown = ( ) => (
6265 < div style = { { marginTop : '10px' } } >
6366 < ActionsMenu
64- divider = { true }
6567 buttons = { [
6668 {
6769 title : 'Review' ,
@@ -73,14 +75,15 @@ const ChangeRequestActionMenu: React.FC<ChangeRequestActionMenuProps> = ({
7375 title : 'Delete' ,
7476 onClick : handleDeleteOpen ,
7577 disabled : ! isUserAllowedToDelete ,
76- icon : < DeleteIcon fontSize = "small" />
78+ icon : < DeleteIcon fontSize = "small" /> ,
79+ dividerTop : true
7780 }
7881 ] }
7982 />
8083 </ div >
8184 ) ;
8285
83- const RequestReviewerDropdown = ( ) => (
86+ const requestReviewerDropdown = ( ) => (
8487 < >
8588 < Autocomplete
8689 isOptionEqualToValue = { ( option , value ) => option . id === value . id }
@@ -121,12 +124,8 @@ const ChangeRequestActionMenu: React.FC<ChangeRequestActionMenuProps> = ({
121124 </ >
122125 ) ;
123126
124- const RenderUnreviewedActionsDropdown = ( ) =>
125- isRequestAllowed && changeRequest . status === ChangeRequestStatus . Open ? (
126- RequestReviewerDropdown ( )
127- ) : (
128- < UnreviewedActionsDropdown />
129- ) ;
127+ const renderUnreviewedActionsDropdown = ( ) =>
128+ isRequestAllowed ? requestReviewerDropdown ( ) : < UnreviewedActionsDropdown /> ;
130129
131130 const ImplementCrDropdown = ( ) => (
132131 < ActionsMenu
@@ -159,7 +158,7 @@ const ChangeRequestActionMenu: React.FC<ChangeRequestActionMenuProps> = ({
159158 />
160159 ) ;
161160
162- return changeRequest . accepted ? < ImplementCrDropdown /> : < > { RenderUnreviewedActionsDropdown ( ) } </ > ;
161+ return changeRequest . accepted ? < ImplementCrDropdown /> : < > { renderUnreviewedActionsDropdown ( ) } </ > ;
163162} ;
164163
165164export default ChangeRequestActionMenu ;
0 commit comments