diff --git a/plugins/scaffolder/src/api.test.ts b/plugins/scaffolder/src/api.test.ts index d5b91ebdb8..7dc840ee96 100644 --- a/plugins/scaffolder/src/api.test.ts +++ b/plugins/scaffolder/src/api.test.ts @@ -347,7 +347,7 @@ describe('api', () => { }), ); - const result = await apiClient.listTasks('all'); + const result = await apiClient.listTasks({ createdBy: 'all' }); expect(result).toHaveLength(2); }); it('should list task using the current user as owner', async () => { @@ -382,7 +382,7 @@ describe('api', () => { userEntityRef: 'user:default/foo', }); - const result = await apiClient.listTasks('owned'); + const result = await apiClient.listTasks({ createdBy: 'owned' }); expect(identityApi.getBackstageIdentity).toBeCalled(); expect(result).toHaveLength(1); }); diff --git a/plugins/scaffolder/src/api.ts b/plugins/scaffolder/src/api.ts index eaf92f949e..c19853b5f1 100644 --- a/plugins/scaffolder/src/api.ts +++ b/plugins/scaffolder/src/api.ts @@ -76,12 +76,14 @@ export class ScaffolderClient implements ScaffolderApi { this.identityApi = options.identityApi; } - async listTasks(createdBy: TasksOwnerFilterKind): Promise { + async listTasks(options: { + createdBy: TasksOwnerFilterKind; + }): Promise { const baseUrl = await this.discoveryApi.getBaseUrl('scaffolder'); const { userEntityRef } = await this.identityApi.getBackstageIdentity(); const query = queryString.stringify( - createdBy === 'owned' ? { createdBy: userEntityRef } : {}, + options.createdBy === 'owned' ? { createdBy: userEntityRef } : {}, ); const url = `${baseUrl}/v2/tasks?${query}`; diff --git a/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx b/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx index cf7204a3c6..3d20fd1fd8 100644 --- a/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx +++ b/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx @@ -41,7 +41,7 @@ describe('', () => { signOut: jest.fn(), }; - const scaffolderApiMock: jest.Mocked = { + const scaffolderApiMock: jest.Mocked> = { scaffold: jest.fn(), getTemplateParameterSchema: jest.fn(), listTasks: jest.fn(), @@ -139,7 +139,7 @@ describe('', () => { }, ); - expect(scaffolderApiMock.listTasks).toBeCalledWith('owned'); + expect(scaffolderApiMock.listTasks).toBeCalledWith({ createdBy: 'owned' }); expect(getByText('List template tasks')).toBeInTheDocument(); expect(getByText('All tasks that have been started')).toBeInTheDocument(); expect(getByText('Tasks')).toBeInTheDocument(); @@ -171,6 +171,7 @@ describe('', () => { }, }, }); + scaffolderApiMock.listTasks .mockResolvedValue([ { @@ -231,7 +232,7 @@ describe('', () => { fireEvent.click(allButton); }); - expect(scaffolderApiMock.listTasks).toBeCalledWith('all'); + expect(scaffolderApiMock.listTasks).toBeCalledWith({ createdBy: 'all' }); expect(await findByText('One Template')).toBeInTheDocument(); expect(await findByText('OtherUser')).toBeInTheDocument(); }); diff --git a/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx b/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx index 7866375fb1..5f099ed331 100644 --- a/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx +++ b/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx @@ -50,10 +50,17 @@ const ListTaskPageContent = (props: MyTaskPageProps) => { const rootLink = useRouteRef(rootRouteRef); const [ownerFilter, setOwnerFilter] = useState(initiallySelectedFilter); - const { value, loading, error } = useAsync( - () => scaffolderApi.listTasks(ownerFilter), - [scaffolderApi, ownerFilter], - ); + const { value, loading, error } = useAsync(() => { + if (scaffolderApi.listTasks) { + return scaffolderApi.listTasks?.({ createdBy: ownerFilter }); + } + + // eslint-disable-next-line no-console + console.warn( + 'listTasks is not implemented in the scaffolderApi, please make sure to implement this method.', + ); + return Promise.resolve([]); + }, [scaffolderApi, ownerFilter]); if (loading) { return ; diff --git a/plugins/scaffolder/src/types.ts b/plugins/scaffolder/src/types.ts index 6792f069cc..608d586b09 100644 --- a/plugins/scaffolder/src/types.ts +++ b/plugins/scaffolder/src/types.ts @@ -178,7 +178,11 @@ export interface ScaffolderApi { getTask(taskId: string): Promise; - listTasks?(createdBy: TasksOwnerFilterKind): Promise; + listTasks?({ + createdBy, + }: { + createdBy: TasksOwnerFilterKind; + }): Promise; getIntegrationsList( options: ScaffolderGetIntegrationsListOptions,