import * as _ from "lodash";
import { projectActions, ProjectAction } from "./project-action";
-import { TreeItem, TreeItemStatus } from "../../components/tree/tree";
-import { ProjectResource } from "../../models/project";
+import { TreeItem, TreeItemStatus } from "~/components/tree/tree";
+import { ProjectResource } from "~/models/project";
export type ProjectState = {
items: Array<TreeItem<ProjectResource>>,
currentItemId: string,
- creator: ProjectCreator
+ updater: ProjectUpdater
};
-interface ProjectCreator {
+interface ProjectUpdater {
opened: boolean;
- ownerUuid: string;
- error?: string;
+ uuid: string;
}
export function findTreeItem<T>(tree: Array<TreeItem<T>>, itemId: string): TreeItem<T> | undefined {
return items;
}
-const updateCreator = (state: ProjectState, creator: Partial<ProjectCreator>) => ({
+const updateProject = (state: ProjectState, updater?: Partial<ProjectUpdater>) => ({
...state,
- creator: {
- ...state.creator,
- ...creator
+ updater: {
+ ...state.updater,
+ ...updater
}
});
const initialState: ProjectState = {
items: [],
currentItemId: "",
- creator: {
+ updater: {
opened: false,
- ownerUuid: ""
+ uuid: ''
}
};
export const projectsReducer = (state: ProjectState = initialState, action: ProjectAction) => {
return projectActions.match(action, {
- OPEN_PROJECT_CREATOR: ({ ownerUuid }) => updateCreator(state, { ownerUuid, opened: true }),
- CLOSE_PROJECT_CREATOR: () => updateCreator(state, { opened: false }),
- CREATE_PROJECT: () => updateCreator(state, { error: undefined }),
- CREATE_PROJECT_SUCCESS: () => updateCreator(state, { opened: false, ownerUuid: "" }),
+ OPEN_PROJECT_UPDATER: ({ uuid }) => updateProject(state, { uuid, opened: true }),
+ CLOSE_PROJECT_UPDATER: () => updateProject(state, { opened: false, uuid: "" }),
+ UPDATE_PROJECT_SUCCESS: () => updateProject(state, { opened: false, uuid: "" }),
REMOVE_PROJECT: () => state,
PROJECTS_REQUEST: itemId => {
const items = _.cloneDeep(state.items);