1
- import { FC , useCallback , useContext , useMemo } from 'react'
1
+ import { FC , useCallback , useContext , useMemo , useState } from 'react'
2
2
import { find } from 'lodash'
3
3
import { NavigateFunction , Params , useNavigate , useParams } from 'react-router-dom'
4
4
import classNames from 'classnames'
@@ -18,6 +18,7 @@ import {
18
18
} from '~/libs/ui'
19
19
import { profileContext , ProfileContextData , UserRole } from '~/libs/core'
20
20
import { EnvironmentConfig } from '~/config'
21
+ import { Sort } from '~/apps/admin/src/platform/gamification-admin/src/game-lib'
21
22
22
23
import { ProjectTypeLabels } from '../../constants'
23
24
import { approveCopilotRequest , CopilotRequestsResponse , useCopilotRequests } from '../../services/copilot-requests'
@@ -136,6 +137,10 @@ const CopilotTableActions: FC<{request: CopilotRequest}> = props => {
136
137
const CopilotRequestsPage : FC = ( ) => {
137
138
const navigate : NavigateFunction = useNavigate ( )
138
139
const routeParams : Params < string > = useParams ( )
140
+ const [ sort , setSort ] = useState < Sort > ( {
141
+ direction : 'desc' ,
142
+ fieldName : 'createdAt' ,
143
+ } )
139
144
140
145
const { profile } : ProfileContextData = useContext ( profileContext )
141
146
const isAdminOrPM : boolean = useMemo (
@@ -148,7 +153,7 @@ const CopilotRequestsPage: FC = () => {
148
153
isValidating : requestsLoading ,
149
154
hasMoreCopilotRequests,
150
155
setSize,
151
- size } : CopilotRequestsResponse = useCopilotRequests ( )
156
+ size } : CopilotRequestsResponse = useCopilotRequests ( sort )
152
157
153
158
const viewRequestDetails = useMemo ( ( ) => (
154
159
routeParams . requestId && find ( requests , { id : + routeParams . requestId } ) as CopilotRequest
@@ -195,7 +200,7 @@ const CopilotRequestsPage: FC = () => {
195
200
} ,
196
201
{
197
202
label : 'Type' ,
198
- propertyName : 'type ' ,
203
+ propertyName : 'projectType ' ,
199
204
type : 'text' ,
200
205
} ,
201
206
{
@@ -227,13 +232,17 @@ const CopilotRequestsPage: FC = () => {
227
232
const tableData = useMemo ( ( ) => requests . map ( request => ( {
228
233
...request ,
229
234
projectName : request . project ?. name ,
230
- type : ProjectTypeLabels [ request . projectType ] ?? '' ,
235
+ projectType : ProjectTypeLabels [ request . projectType ] ?? '' ,
231
236
} ) ) , [ requests ] )
232
237
233
238
function loadMore ( ) : void {
234
239
setSize ( size + 1 )
235
240
}
236
241
242
+ function onToggleSort ( s : Sort ) : void {
243
+ setSort ( s )
244
+ }
245
+
237
246
// header button config
238
247
const addNewRequestButton : ButtonProps = {
239
248
label : 'New Copilot Request' ,
@@ -260,6 +269,7 @@ const CopilotRequestsPage: FC = () => {
260
269
data = { tableData }
261
270
moreToLoad = { hasMoreCopilotRequests }
262
271
onLoadMoreClick = { loadMore }
272
+ onToggleSort = { onToggleSort }
263
273
/>
264
274
{ requestsLoading && < LoadingCircles /> }
265
275
{ viewRequestDetails && (
0 commit comments