refs #14523 fix share button for workflow and progress when add collabs
authorJanicki Artur <artur.janicki@contractors.roche.com>
Thu, 22 Nov 2018 18:40:20 +0000 (19:40 +0100)
committerJanicki Artur <artur.janicki@contractors.roche.com>
Thu, 22 Nov 2018 18:40:20 +0000 (19:40 +0100)
Arvados-DCO-1.1-Signed-off-by: Janicki Artur <artur.janicki@contractors.roche.com>

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

index d1ac14cb4a411d8c95f837841a74248ce92946ab..0e3c76b28ef08f4c0c2a251d421cbc8e00d1aab4 100644 (file)
@@ -50,6 +50,7 @@ export const sendSharingInvitations = async (dispatch: Dispatch) => {
         message: 'Resource has been shared',
         kind: SnackbarKind.SUCCESS,
     }));
+    dispatch(progressIndicatorActions.STOP_WORKING(SHARING_DIALOG_NAME));
 };
 
 const loadSharingDialog = async (dispatch: Dispatch, getState: () => RootState, { permissionService }: ServiceRepository) => {
index c8c6428043f7ecf04d758aec8147457ac91a490e..d0266adc539358bf0aeb48ec135dbb37fe4c5b06 100644 (file)
@@ -9,18 +9,19 @@ import { ResourceKind, TrashableResource } from '~/models/resource';
 import { ProjectIcon, CollectionIcon, ProcessIcon, DefaultIcon, WorkflowIcon, ShareIcon } from '~/components/icon/icon';
 import { formatDate, formatFileSize } from '~/common/formatters';
 import { resourceLabel } from '~/common/labels';
-import { connect } from 'react-redux';
+import { connect, DispatchProp } from 'react-redux';
 import { RootState } from '~/store/store';
 import { getResource } from '~/store/resources/resources';
 import { GroupContentsResource } from '~/services/groups-service/groups-service';
 import { getProcess, Process, getProcessStatus, getProcessStatusColor } from '~/store/processes/process';
 import { ArvadosTheme } from '~/common/custom-theme';
-import { compose } from 'redux';
+import { compose, Dispatch } from 'redux';
 import { WorkflowResource } from '~/models/workflow';
 import { ResourceStatus } from '~/views/workflow-panel/workflow-panel-view';
 import { getUuidPrefix } from '~/store/workflow-panel/workflow-panel-actions';
 import { CollectionResource } from "~/models/collection";
 import { getResourceData } from "~/store/resources-data/resources-data";
+import { openSharingDialog } from '~/store/sharing-dialog/sharing-dialog-actions';
 
 export const renderName = (item: { name: string; uuid: string, kind: string }) =>
     <Grid container alignItems="center" wrap="nowrap" spacing={16}>
@@ -87,13 +88,13 @@ const getPublicUuid = (uuidPrefix: string) => {
 };
 
 // ToDo: share onClick
-export const resourceShare = (uuidPrefix: string, ownerUuid?: string) => {
+export const resourceShare = (dispatch: Dispatch, uuidPrefix: string, ownerUuid?: string, uuid?: string) => {
     const isPublic = ownerUuid === getPublicUuid(uuidPrefix);
     return (
         <div>
-            { isPublic &&
+            { !isPublic && uuid &&
                 <Tooltip title="Share">
-                    <IconButton onClick={() => undefined}>
+                    <IconButton onClick={() => dispatch<any>(openSharingDialog(uuid))}>
                         <ShareIcon />
                     </IconButton>
                 </Tooltip>
@@ -107,10 +108,12 @@ export const ResourceShare = connect(
         const resource = getResource<WorkflowResource>(props.uuid)(state.resources);
         const uuidPrefix = getUuidPrefix(state);
         return {
+            uuid: resource ? resource.uuid : '',
             ownerUuid: resource ? resource.ownerUuid : '',
             uuidPrefix
         };
-    })((props: { ownerUuid?: string, uuidPrefix: string }) => resourceShare(props.uuidPrefix, props.ownerUuid));
+    })((props: { ownerUuid?: string, uuidPrefix: string, uuid?: string } & DispatchProp<any>) =>
+        resourceShare(props.dispatch, props.uuidPrefix, props.ownerUuid, props.uuid));
 
 export const renderWorkflowStatus = (uuidPrefix: string, ownerUuid?: string) => {
     if (ownerUuid === getPublicUuid(uuidPrefix)) {