Send invitations only if advanced mode was not enabled
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Tue, 30 Oct 2018 13:40:44 +0000 (14:40 +0100)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Tue, 30 Oct 2018 13:40:44 +0000 (14:40 +0100)
Feature #14365

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/store/sharing-dialog/sharing-dialog-actions.ts
src/views-components/sharing-dialog/sharing-dialog.tsx

index fe23b3282e8f6ed239e8dbd38e8af78c6bf30c04..205d3089662c39c09356a6ebbb9b37d2c62d97fd 100644 (file)
@@ -18,6 +18,7 @@ import { PermissionResource } from '~/models/permission';
 import { differenceWith } from "lodash";
 import { withProgress } from "~/store/progress-indicator/with-progress";
 import { progressIndicatorActions } from '~/store/progress-indicator/progress-indicator-actions.ts';
+import { snackbarActions, SnackbarKind } from "../snackbar/snackbar-actions";
 
 export const openSharingDialog = (resourceUuid: string) =>
     (dispatch: Dispatch) => {
@@ -41,6 +42,16 @@ export const saveSharingDialogChanges = async (dispatch: Dispatch) => {
     await dispatch<any>(loadSharingDialog);
 };
 
+export const sendSharingInvitations = async (dispatch: Dispatch) => {
+    dispatch(progressIndicatorActions.START_WORKING(SHARING_DIALOG_NAME));
+    await dispatch<any>(sendInvitations);
+    dispatch(closeSharingDialog());
+    dispatch(snackbarActions.OPEN_SNACKBAR({
+        message: 'New permissions created',
+        kind: SnackbarKind.SUCCESS,
+    }));
+};
+
 const loadSharingDialog = async (dispatch: Dispatch, getState: () => RootState, { permissionService }: ServiceRepository) => {
 
     const dialog = getDialog<string>(getState().dialog, SHARING_DIALOG_NAME);
index 69c467e95d1338135ab1221653f00f02849c52f2..b295f6d167f9530236f82f8d4d36406bd131a2df 100644 (file)
@@ -6,7 +6,7 @@ import { compose, Dispatch } from 'redux';
 import { connect } from 'react-redux';
 
 import * as React from 'react';
-import { connectSharingDialog, saveSharingDialogChanges, connectSharingDialogProgress } from '~/store/sharing-dialog/sharing-dialog-actions';
+import { connectSharingDialog, saveSharingDialogChanges, connectSharingDialogProgress, sendSharingInvitations } from '~/store/sharing-dialog/sharing-dialog-actions';
 import { WithDialogProps } from '~/store/dialog/with-dialog';
 import { RootState } from '~/store/store';
 
@@ -26,12 +26,20 @@ const mapStateToProps = (state: RootState, { advancedViewOpen, working, ...props
     children: <SharingDialogContent {...{ advancedViewOpen }} />,
 });
 
-const mapDispatchToProps = (dispatch: Dispatch, { toggleAdvancedView, ...props }: Props): SharingDialogActionProps => ({
+const mapDispatchToProps = (dispatch: Dispatch, { toggleAdvancedView, advancedViewOpen, ...props }: Props): SharingDialogActionProps => ({
     ...props,
     onClose: props.closeDialog,
-    onExited: toggleAdvancedView,
+    onExited: () => {
+        if (advancedViewOpen) {
+            toggleAdvancedView();
+        }
+    },
     onSave: () => {
-        dispatch<any>(saveSharingDialogChanges);
+        if (advancedViewOpen) {
+            dispatch<any>(saveSharingDialogChanges);
+        } else {
+            dispatch<any>(sendSharingInvitations);
+        }
     },
     onAdvanced: toggleAdvancedView,
 });