1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { serverApi } from "../../common/api/server-api";
6 import { Dispatch } from "redux";
7 import actions from "../../store/project/project-action";
8 import { Project } from "../../models/project";
9 import UrlBuilder from "../../common/api/url-builder";
10 import FilterBuilder, { FilterField } from "../../common/api/filter-builder";
12 interface GroupsResponse {
22 modified_by_client_uuid: string;
23 modified_by_user_uuid: string;
28 writable_by: string[];
35 export default class ProjectService {
36 public getProjectList = (parentUuid?: string) => (dispatch: Dispatch): Promise<Project[]> => {
37 dispatch(actions.PROJECTS_REQUEST(parentUuid));
39 const fb = new FilterBuilder();
40 fb.addLike(FilterField.OWNER_UUID, parentUuid);
41 return serverApi.get<GroupsResponse>('/groups', { params: {
44 const projects = groups.data.items.map(g => ({
46 createdAt: g.created_at,
47 modifiedAt: g.modified_at,
50 ownerUuid: g.owner_uuid,
53 dispatch(actions.PROJECTS_SUCCESS({projects, parentItemId: parentUuid}));
57 dispatch(actions.PROJECTS_SUCCESS({projects: [], parentItemId: parentUuid}));
58 return Promise.resolve([]);