X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/3664cf869c1bdb38e62ffd35d16dee0c12af7c59..fbd2012fa56f6de44dfc4008d70e5a21cfcaf459:/src/services/project-service/project-service.ts diff --git a/src/services/project-service/project-service.ts b/src/services/project-service/project-service.ts index f35ca9cd..119cfece 100644 --- a/src/services/project-service/project-service.ts +++ b/src/services/project-service/project-service.ts @@ -2,10 +2,12 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { serverApi } from "../../common/server-api"; +import { serverApi } from "../../common/api/server-api"; import { Dispatch } from "redux"; import actions from "../../store/project/project-action"; import { Project } from "../../models/project"; +import UrlBuilder from "../../common/api/url-builder"; +import FilterBuilder, { FilterField } from "../../common/api/filter-builder"; interface GroupsResponse { offset: number; @@ -31,18 +33,29 @@ interface GroupsResponse { } export default class ProjectService { - public getTopProjectList = () => (dispatch: Dispatch) => { - dispatch(actions.TOP_PROJECTS_REQUEST()); - serverApi.get('/groups').then(groups => { - const projects = groups.data.items.map(g => ({ - name: g.name, - createdAt: g.created_at, - modifiedAt: g.modified_at, - href: g.href, - uuid: g.uuid, - ownerUuid: g.owner_uuid - } as Project)); - dispatch(actions.TOP_PROJECTS_SUCCESS(projects)); - }); + public getProjectList = (parentUuid?: string) => (dispatch: Dispatch): Promise => { + dispatch(actions.PROJECTS_REQUEST(parentUuid)); + if (parentUuid) { + const fb = new FilterBuilder(); + fb.addLike(FilterField.OWNER_UUID, parentUuid); + return serverApi.get('/groups', { params: { + filters: fb.get() + }}).then(groups => { + const projects = groups.data.items.map(g => ({ + name: g.name, + createdAt: g.created_at, + modifiedAt: g.modified_at, + href: g.href, + uuid: g.uuid, + ownerUuid: g.owner_uuid, + kind: g.kind + } as Project)); + dispatch(actions.PROJECTS_SUCCESS({projects, parentItemId: parentUuid})); + return projects; + }); + } else { + dispatch(actions.PROJECTS_SUCCESS({projects: [], parentItemId: parentUuid})); + return Promise.resolve([]); + } } }