X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dd89200ad6fdbfa337fdbab5f54def8712c6746c..d842372e4f45ee06315e511529e65ae1d3f319a0:/src/store/project/project-reducer.ts diff --git a/src/store/project/project-reducer.ts b/src/store/project/project-reducer.ts index 424900780d..bb0748657e 100644 --- a/src/store/project/project-reducer.ts +++ b/src/store/project/project-reducer.ts @@ -11,7 +11,8 @@ import { ProjectResource } from "~/models/project"; export type ProjectState = { items: Array>, currentItemId: string, - creator: ProjectCreator + creator: ProjectCreator, + updater: ProjectUpdater }; interface ProjectCreator { @@ -20,6 +21,11 @@ interface ProjectCreator { error?: string; } +interface ProjectUpdater { + opened: boolean; + uuid: string; +} + export function findTreeItem(tree: Array>, itemId: string): TreeItem | undefined { let item; for (const t of tree) { @@ -100,12 +106,24 @@ const updateCreator = (state: ProjectState, creator: Partial) => } }); +const updateProject = (state: ProjectState, updater?: Partial) => ({ + ...state, + updater: { + ...state.updater, + ...updater + } +}); + const initialState: ProjectState = { items: [], currentItemId: "", creator: { opened: false, ownerUuid: "" + }, + updater: { + opened: false, + uuid: '' } }; @@ -116,6 +134,9 @@ export const projectsReducer = (state: ProjectState = initialState, action: Proj 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);