1- import { FC , useCallback , useContext , useMemo } from 'react'
1+ import { FC , useCallback , useContext , useMemo , useState } from 'react'
22import { find } from 'lodash'
33import { NavigateFunction , Params , useNavigate , useParams } from 'react-router-dom'
44import classNames from 'classnames'
@@ -18,6 +18,7 @@ import {
1818} from '~/libs/ui'
1919import { profileContext , ProfileContextData , UserRole } from '~/libs/core'
2020import { EnvironmentConfig } from '~/config'
21+ import { Sort } from '~/apps/admin/src/platform/gamification-admin/src/game-lib'
2122
2223import { ProjectTypeLabels } from '../../constants'
2324import { approveCopilotRequest , CopilotRequestsResponse , useCopilotRequests } from '../../services/copilot-requests'
@@ -136,6 +137,10 @@ const CopilotTableActions: FC<{request: CopilotRequest}> = props => {
136137const CopilotRequestsPage : FC = ( ) => {
137138 const navigate : NavigateFunction = useNavigate ( )
138139 const routeParams : Params < string > = useParams ( )
140+ const [ sort , setSort ] = useState < Sort > ( {
141+ direction : 'desc' ,
142+ fieldName : 'createdAt' ,
143+ } )
139144
140145 const { profile } : ProfileContextData = useContext ( profileContext )
141146 const isAdminOrPM : boolean = useMemo (
@@ -148,7 +153,7 @@ const CopilotRequestsPage: FC = () => {
148153 isValidating : requestsLoading ,
149154 hasMoreCopilotRequests,
150155 setSize,
151- size } : CopilotRequestsResponse = useCopilotRequests ( )
156+ size } : CopilotRequestsResponse = useCopilotRequests ( sort )
152157
153158 const viewRequestDetails = useMemo ( ( ) => (
154159 routeParams . requestId && find ( requests , { id : + routeParams . requestId } ) as CopilotRequest
@@ -195,7 +200,7 @@ const CopilotRequestsPage: FC = () => {
195200 } ,
196201 {
197202 label : 'Type' ,
198- propertyName : 'type ' ,
203+ propertyName : 'projectType ' ,
199204 type : 'text' ,
200205 } ,
201206 {
@@ -227,13 +232,17 @@ const CopilotRequestsPage: FC = () => {
227232 const tableData = useMemo ( ( ) => requests . map ( request => ( {
228233 ...request ,
229234 projectName : request . project ?. name ,
230- type : ProjectTypeLabels [ request . projectType ] ?? '' ,
235+ projectType : ProjectTypeLabels [ request . projectType ] ?? '' ,
231236 } ) ) , [ requests ] )
232237
233238 function loadMore ( ) : void {
234239 setSize ( size + 1 )
235240 }
236241
242+ function onToggleSort ( s : Sort ) : void {
243+ setSort ( s )
244+ }
245+
237246 // header button config
238247 const addNewRequestButton : ButtonProps = {
239248 label : 'New Copilot Request' ,
@@ -260,6 +269,7 @@ const CopilotRequestsPage: FC = () => {
260269 data = { tableData }
261270 moreToLoad = { hasMoreCopilotRequests }
262271 onLoadMoreClick = { loadMore }
272+ onToggleSort = { onToggleSort }
263273 />
264274 { requestsLoading && < LoadingCircles /> }
265275 { viewRequestDetails && (
0 commit comments