projects
/
arvados-workbench2.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Creation dialog with redux-form validation
[arvados-workbench2.git]
/
src
/
store
/
project
/
project-action.ts
diff --git
a/src/store/project/project-action.ts
b/src/store/project/project-action.ts
index a02c9e75461565687884b9ff960f7e5b76ca1b6c..3da60f65c9ae9c3d7a14ccbfe0806ba2d6990394 100644
(file)
--- a/
src/store/project/project-action.ts
+++ b/
src/store/project/project-action.ts
@@
-3,21
+3,20
@@
// SPDX-License-Identifier: AGPL-3.0
import { default as unionize, ofType, UnionOf } from "unionize";
// SPDX-License-Identifier: AGPL-3.0
import { default as unionize, ofType, UnionOf } from "unionize";
-import { Project
, Project
Resource } from "../../models/project";
+import { ProjectResource } from "../../models/project";
import { projectService } from "../../services/services";
import { Dispatch } from "redux";
import { projectService } from "../../services/services";
import { Dispatch } from "redux";
-import { getResourceKind } from "../../models/resource";
import FilterBuilder from "../../common/api/filter-builder";
import FilterBuilder from "../../common/api/filter-builder";
-import {
ThunkAction } from "../../../node_modules/redux-thunk
";
+import {
RootState } from "../store
";
const actions = unionize({
const actions = unionize({
- OPEN_PROJECT_CREATOR: ofType<{}>(),
+ OPEN_PROJECT_CREATOR: ofType<{ ownerUuid: string }>(),
+ CLOSE_PROJECT_CREATOR: ofType<{}>(),
CREATE_PROJECT: ofType<Partial<ProjectResource>>(),
CREATE_PROJECT_SUCCESS: ofType<ProjectResource>(),
CREATE_PROJECT: ofType<Partial<ProjectResource>>(),
CREATE_PROJECT_SUCCESS: ofType<ProjectResource>(),
- CREATE_PROJECT_ERROR: ofType<string>(),
REMOVE_PROJECT: ofType<string>(),
PROJECTS_REQUEST: ofType<string>(),
REMOVE_PROJECT: ofType<string>(),
PROJECTS_REQUEST: ofType<string>(),
- PROJECTS_SUCCESS: ofType<{ projects: Project[], parentItemId?: string }>(),
+ PROJECTS_SUCCESS: ofType<{ projects: Project
Resource
[], parentItemId?: string }>(),
TOGGLE_PROJECT_TREE_ITEM_OPEN: ofType<string>(),
TOGGLE_PROJECT_TREE_ITEM_ACTIVE: ofType<string>(),
RESET_PROJECT_TREE_ACTIVITY: ofType<string>()
TOGGLE_PROJECT_TREE_ITEM_OPEN: ofType<string>(),
TOGGLE_PROJECT_TREE_ITEM_ACTIVE: ofType<string>(),
RESET_PROJECT_TREE_ACTIVITY: ofType<string>()
@@
-32,23
+31,20
@@
export const getProjectList = (parentUuid: string = '') => (dispatch: Dispatch)
filters: FilterBuilder
.create<ProjectResource>()
.addEqual("ownerUuid", parentUuid)
filters: FilterBuilder
.create<ProjectResource>()
.addEqual("ownerUuid", parentUuid)
- }).then(listResults => {
- const projects = listResults.items.map(item => ({
- ...item,
- kind: getResourceKind(item.kind)
- }));
+ }).then(({ items: projects }) => {
dispatch(actions.PROJECTS_SUCCESS({ projects, parentItemId: parentUuid }));
return projects;
});
};
export const createProject = (project: Partial<ProjectResource>) =>
dispatch(actions.PROJECTS_SUCCESS({ projects, parentItemId: parentUuid }));
return projects;
});
};
export const createProject = (project: Partial<ProjectResource>) =>
- (dispatch: Dispatch) => {
- dispatch(actions.CREATE_PROJECT(project));
+ (dispatch: Dispatch, getState: () => RootState) => {
+ const { ownerUuid } = getState().projects.creator;
+ const projectData = { ownerUuid, ...project };
+ dispatch(actions.CREATE_PROJECT(projectData));
return projectService
return projectService
- .create(project)
- .then(project => dispatch(actions.CREATE_PROJECT_SUCCESS(project)))
- .catch(() => dispatch(actions.CREATE_PROJECT_ERROR("Could not create a project")));
+ .create(projectData)
+ .then(project => dispatch(actions.CREATE_PROJECT_SUCCESS(project)));
};
export type ProjectAction = UnionOf<typeof actions>;
};
export type ProjectAction = UnionOf<typeof actions>;