1
- import { FC , useMemo } from 'react'
1
+ import { FC , useContext , useMemo } from 'react'
2
2
import { useNavigate } from 'react-router-dom'
3
3
import classNames from 'classnames'
4
4
5
5
import {
6
+ ButtonProps ,
6
7
ContentLayout ,
7
8
LoadingSpinner ,
8
9
PageTitle ,
9
10
Table ,
10
11
TableColumn ,
11
12
} from '~/libs/ui'
13
+ import { profileContext , ProfileContextData , UserRole } from '~/libs/core'
12
14
13
15
import { CopilotOpportunity } from '../../models/CopilotOpportunity'
14
16
import { copilotRoutesMap } from '../../copilots.routes'
@@ -102,6 +104,12 @@ const tableColumns: TableColumn<CopilotOpportunity>[] = [
102
104
const CopilotOpportunityList : FC < { } > = ( ) => {
103
105
const navigate = useNavigate ( )
104
106
107
+ const { profile } : ProfileContextData = useContext ( profileContext )
108
+ const isAdminOrPM : boolean = useMemo (
109
+ ( ) => ! ! profile ?. roles ?. some ( role => role === UserRole . tcaAdmin || role === UserRole . projectManager ) ,
110
+ [ profile ] ,
111
+ )
112
+
105
113
const {
106
114
data : opportunities , isValidating, size, setSize,
107
115
} : CopilotOpportunitiesResponse = useCopilotOpportunities ( )
@@ -121,9 +129,15 @@ const CopilotOpportunityList: FC<{}> = () => {
121
129
122
130
const opportunitiesLoading = isValidating
123
131
132
+ const addNewRequestButton : ButtonProps = {
133
+ label : 'New Copilot Request' ,
134
+ onClick : ( ) => navigate ( copilotRoutesMap . CopilotRequestForm ) ,
135
+ }
136
+
124
137
return (
125
138
< ContentLayout
126
139
title = 'Copilot Opportunities'
140
+ buttonConfig = { isAdminOrPM ? addNewRequestButton : undefined }
127
141
>
128
142
< PageTitle > Copilot Opportunities</ PageTitle >
129
143
< Table
0 commit comments