X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/ae7d952a97542c2cfc12f6f41ab0de93af278919..c90e813adcec89899d9db95843295a84fb058c3e:/src/store/project/project-action.ts diff --git a/src/store/project/project-action.ts b/src/store/project/project-action.ts index a58edd3c..3c264d3e 100644 --- a/src/store/project/project-action.ts +++ b/src/store/project/project-action.ts @@ -4,19 +4,31 @@ import { default as unionize, ofType, UnionOf } from "unionize"; import { Project } from "../../models/project"; +import { projectService } from "../../services/services"; +import { Dispatch } from "redux"; const actions = unionize({ CREATE_PROJECT: ofType(), REMOVE_PROJECT: ofType(), - PROJECTS_REQUEST: ofType(), + PROJECTS_REQUEST: ofType(), PROJECTS_SUCCESS: ofType<{ projects: Project[], parentItemId?: string }>(), TOGGLE_PROJECT_TREE_ITEM_OPEN: ofType(), TOGGLE_PROJECT_TREE_ITEM_ACTIVE: ofType(), RESET_PROJECT_TREE_ACTIVITY: ofType(), }, { - tag: 'type', - value: 'payload' -}); + tag: 'type', + value: 'payload' + }); + +export const getProjectList = (parentUuid?: string) => (dispatch: Dispatch): Promise => { + if (parentUuid) { + dispatch(actions.PROJECTS_REQUEST(parentUuid)); + return projectService.getProjectList(parentUuid).then(projects => { + dispatch(actions.PROJECTS_SUCCESS({ projects, parentItemId: parentUuid })); + return projects; + }); + } return Promise.resolve([]); +}; export type ProjectAction = UnionOf; export default actions;