99 ContentLayout ,
1010 IconCheck ,
1111 IconSolid ,
12- LoadingSpinner ,
12+ LoadingCircles ,
1313 PageTitle ,
1414 Table ,
1515 TableColumn ,
@@ -22,7 +22,6 @@ import { EnvironmentConfig } from '~/config'
2222import { ProjectTypeLabels } from '../../constants'
2323import { approveCopilotRequest , CopilotRequestsResponse , useCopilotRequests } from '../../services/copilot-requests'
2424import { CopilotRequest } from '../../models/CopilotRequest'
25- import { ProjectsResponse , useProjects } from '../../services/projects'
2625import { copilotRoutesMap } from '../../copilots.routes'
2726import { Project } from '../../models/Project'
2827
@@ -144,18 +143,12 @@ const CopilotRequestsPage: FC = () => {
144143 [ profile ] ,
145144 )
146145
147- const { data : requests = [ ] , isValidating : requestsLoading } : CopilotRequestsResponse = useCopilotRequests ( )
148- const projectIds = useMemo ( ( ) => (
149- ( new Set ( requests . map ( r => r . projectId ) )
150- . values ( ) as any )
151- . toArray ( )
152- ) , [ requests ] )
153-
154- const { data : projects = [ ] , isValidating : projectsLoading } : ProjectsResponse = useProjects ( undefined , {
155- filter : { id : projectIds } ,
156- isPaused : ( ) => ! projectIds ?. length ,
157- } )
158- const isLoading = projectsLoading || requestsLoading
146+ const {
147+ data : requests = [ ] ,
148+ isValidating : requestsLoading ,
149+ hasMoreCopilotRequests,
150+ setSize,
151+ size } : CopilotRequestsResponse = useCopilotRequests ( )
159152
160153 const viewRequestDetails = useMemo ( ( ) => (
161154 routeParams . requestId && find ( requests , { id : + routeParams . requestId } ) as CopilotRequest
@@ -165,10 +158,6 @@ const CopilotRequestsPage: FC = () => {
165158 navigate ( copilotRoutesMap . CopilotRequests )
166159 } , [ navigate ] )
167160
168- const projectsMap = useMemo ( ( ) => projects . reduce ( ( all , c ) => (
169- Object . assign ( all , { [ c . id ] : c } )
170- ) , { } as { [ key : string ] : Project } ) , [ projects ] )
171-
172161 const handleLinkClick = useCallback ( ( e : React . MouseEvent < HTMLAnchorElement > ) => {
173162 e . stopPropagation ( )
174163 } , [ ] )
@@ -178,7 +167,6 @@ const CopilotRequestsPage: FC = () => {
178167 label : 'Project' ,
179168 propertyName : 'projectName' ,
180169 renderer : ( copilotRequest : CopilotRequest ) => {
181- const projectName = projectsMap [ copilotRequest . projectId ] ?. name
182170 const projectLink = `
183171 ${ EnvironmentConfig . ADMIN . WORK_MANAGER_URL } /projects/${ copilotRequest . projectId } /challenges
184172 `
@@ -190,7 +178,7 @@ const CopilotRequestsPage: FC = () => {
190178 rel = 'noreferrer'
191179 onClick = { handleLinkClick }
192180 >
193- { projectName }
181+ { copilotRequest . project ?. name }
194182 </ a >
195183 )
196184 } ,
@@ -238,9 +226,13 @@ const CopilotRequestsPage: FC = () => {
238226
239227 const tableData = useMemo ( ( ) => requests . map ( request => ( {
240228 ...request ,
241- projectName : projectsMap [ request . projectId ] ?. name ,
229+ projectName : request . project ?. name ,
242230 type : ProjectTypeLabels [ request . projectType ] ?? '' ,
243- } ) ) , [ projectsMap , requests ] )
231+ } ) ) , [ requests ] )
232+
233+ function loadMore ( ) : void {
234+ setSize ( size + 1 )
235+ }
244236
245237 // header button config
246238 const addNewRequestButton : ButtonProps = {
@@ -263,18 +255,17 @@ const CopilotRequestsPage: FC = () => {
263255 buttonConfig = { addNewRequestButton }
264256 >
265257 < PageTitle > Copilot Requests</ PageTitle >
266- { isLoading ? (
267- < LoadingSpinner inline />
268- ) : (
269- < Table
270- columns = { tableColumns }
271- data = { tableData }
272- />
273- ) }
258+ < Table
259+ columns = { tableColumns }
260+ data = { tableData }
261+ moreToLoad = { hasMoreCopilotRequests }
262+ onLoadMoreClick = { loadMore }
263+ />
264+ { requestsLoading && < LoadingCircles /> }
274265 { viewRequestDetails && (
275266 < CopilotRequestModal
276267 request = { viewRequestDetails }
277- project = { projectsMap [ viewRequestDetails . projectId ] }
268+ project = { viewRequestDetails . project as Project }
278269 onClose = { hideRequestDetails }
279270 />
280271 ) }
0 commit comments