X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/b57a24f2a59938be52c78d453dea00d5cd54720d..47e0dc87fa82bac593c53518e556ba7c55410288:/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 2b1bcffc..f759547a 100644 --- a/src/services/project-service/project-service.ts +++ b/src/services/project-service/project-service.ts @@ -2,55 +2,35 @@ // // SPDX-License-Identifier: AGPL-3.0 -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"; +import { GroupsService, ContentsArguments } from "../groups-service/groups-service"; +import { ProjectResource } from "../../models/project"; +import { GroupClass } from "../../models/group"; +import { ListArguments } from "../../common/api/common-resource-service"; +import { FilterBuilder } from "../../common/api/filter-builder"; -interface GroupsResponse { - offset: number; - limit: number; - items: Array<{ - href: string; - kind: string; - etag: string; - uuid: string; - owner_uuid: string; - created_at: string; - modified_by_client_uuid: string; - modified_by_user_uuid: string; - modified_at: string; - name: string; - group_class: string; - description: string; - writable_by: string[]; - delete_at: string; - trash_at: string; - is_trashed: boolean; - }>; -} - -export default class ProjectService { - public getProjectList = (parentUuid?: string) => (dispatch: Dispatch) => { - dispatch(actions.PROJECTS_REQUEST()); +export class ProjectService extends GroupsService { - const ub = new UrlBuilder('/groups'); - const fb = new FilterBuilder(); - fb.addEqual(FilterField.UUID, parentUuid); - const url = ub.addParam('filter', fb.get()).get(); + create(data: Partial) { + const projectData = { ...data, groupClass: GroupClass.Project }; + return super.create(projectData); + } - serverApi.get(url).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.PROJECTS_SUCCESS({projects, parentItemId: parentUuid})); + list(args: ListArguments = {}) { + return super.list({ + ...args, + filters: this.addProjectFilter(args.filters) }); - }; + } + + private addProjectFilter(filters?: FilterBuilder) { + return FilterBuilder + .create() + .concat(filters + ? filters + : FilterBuilder.create()) + .concat(FilterBuilder + .create() + .addEqual("groupClass", GroupClass.Project)); + } + }