// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import { serverApi } from "../../common/api/server-api"; import { Dispatch } from "redux"; import { Project } from "../../models/project"; import FilterBuilder, { FilterField } from "../../common/api/filter-builder"; import { ArvadosResource } from "../response"; import { getResourceKind } from "../../models/resource"; interface GroupResource extends ArvadosResource { name: string; group_class: string; description: string; writable_by: string[]; delete_at: string; trash_at: string; is_trashed: boolean; } interface GroupsResponse { offset: number; limit: number; items: GroupResource[]; } export default class ProjectService { public getProjectList = (parentUuid?: string): Promise => { if (parentUuid) { const fb = new FilterBuilder(); fb.addLike(FilterField.OWNER_UUID, parentUuid); return serverApi.get('/groups', { params: { filters: fb.get() }}).then(resp => { const projects = resp.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: getResourceKind(g.kind) } as Project)); return projects; }); } else { return Promise.resolve([]); } } }