X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c952afae1af2fb31b68be04f70bd7ae6f9d52aba..499c2c0ca2c1a7a88aeb9ec9a622f9c7f5399343:/src/store/projects/project-update-actions.ts diff --git a/src/store/projects/project-update-actions.ts b/src/store/projects/project-update-actions.ts index 52abfd3fd2..057c7cfac5 100644 --- a/src/store/projects/project-update-actions.ts +++ b/src/store/projects/project-update-actions.ts @@ -22,6 +22,9 @@ import { projectPanelActions } from 'store/project-panel/project-panel-action'; import { GroupClass } from "models/group"; import { Participant } from "views-components/sharing-dialog/participant-select"; import { ProjectProperties } from "./project-create-actions"; +import { getResource } from "store/resources/resources"; +import { ProjectResource } from "models/project"; +import { snackbarActions, SnackbarKind } from "store/snackbar/snackbar-actions"; export interface ProjectUpdateFormDialogData { uuid: string; @@ -37,7 +40,9 @@ export const PROJECT_UPDATE_FORM_SELECTOR = formValueSelector(PROJECT_UPDATE_FOR export const openProjectUpdateDialog = (resource: ProjectUpdateFormDialogData) => (dispatch: Dispatch, getState: () => RootState) => { - dispatch(initialize(PROJECT_UPDATE_FORM_NAME, resource)); + // Get complete project resource from store to handle consumers passing in partial resources + const project = getResource(resource.uuid)(getState().resources); + dispatch(initialize(PROJECT_UPDATE_FORM_NAME, project)); dispatch(dialogActions.OPEN_DIALOG({ id: PROJECT_UPDATE_FORM_NAME, data: { @@ -57,7 +62,8 @@ export const updateProject = (project: ProjectUpdateFormDialogData) => name: project.name, description: project.description, properties: project.properties, - }); + }, + false); dispatch(projectPanelActions.REQUEST_ITEMS()); dispatch(reset(PROJECT_UPDATE_FORM_NAME)); dispatch(dialogActions.CLOSE_DIALOG({ id: PROJECT_UPDATE_FORM_NAME })); @@ -66,7 +72,16 @@ export const updateProject = (project: ProjectUpdateFormDialogData) => const error = getCommonResourceServiceError(e); if (error === CommonResourceServiceError.UNIQUE_NAME_VIOLATION) { dispatch(stopSubmit(PROJECT_UPDATE_FORM_NAME, { name: 'Project with the same name already exists.' } as FormErrors)); + } else { + dispatch(dialogActions.CLOSE_DIALOG({ id: PROJECT_UPDATE_FORM_NAME })); + const errMsg = e.errors + ? e.errors.join('') + : 'There was an error while updating the project'; + dispatch(snackbarActions.OPEN_SNACKBAR({ + message: errMsg, + hideDuration: 2000, + kind: SnackbarKind.ERROR })); } - return ; + return; } };