merge master
[arvados.git] / src / store / collections / collection-copy-actions.ts
index d0d3f39d2ebbf3e551ac17e4cd71c8e2481de5c0..15ea85532d3f66a7f8a1c2a798c8c805227a4675 100644 (file)
@@ -9,10 +9,8 @@ import { resetPickerProjectTree } from '~/store/project-tree-picker/project-tree
 import { RootState } from '~/store/store';
 import { ServiceRepository } from '~/services/services';
 import { getCommonResourceServiceError, CommonResourceServiceError } from '~/common/api/common-resource-service';
-import { snackbarActions } from '~/store/snackbar/snackbar-actions';
-import { projectPanelActions } from '~/store/project-panel/project-panel-action';
 
-export const COLLECTION_COPY_DIALOG = 'projectCopy';
+export const COLLECTION_COPY_FORM_NAME = 'collectionCopyFormName';
 
 export interface CollectionCopyFormDialogData {
     name: string;
@@ -24,28 +22,28 @@ export const openCollectionCopyDialog = (resource: { name: string, uuid: string
     (dispatch: Dispatch) => {
         dispatch<any>(resetPickerProjectTree());
         const initialData: CollectionCopyFormDialogData = { name: `Copy of: ${resource.name}`, ownerUuid: '', uuid: resource.uuid };
-        dispatch<any>(initialize(COLLECTION_COPY_DIALOG, initialData));
-        dispatch(dialogActions.OPEN_DIALOG({ id: COLLECTION_COPY_DIALOG, data: {} }));
+        dispatch<any>(initialize(COLLECTION_COPY_FORM_NAME, initialData));
+        dispatch(dialogActions.OPEN_DIALOG({ id: COLLECTION_COPY_FORM_NAME, data: {} }));
     };
 
 export const copyCollection = (resource: CollectionCopyFormDialogData) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        dispatch(startSubmit(COLLECTION_COPY_DIALOG));
+        dispatch(startSubmit(COLLECTION_COPY_FORM_NAME));
         try {
             const collection = await services.collectionService.get(resource.uuid);
             const uuidKey = 'uuid';
             delete collection[uuidKey];
             await services.collectionService.create({ ...collection, ownerUuid: resource.ownerUuid, name: resource.name });
-            dispatch(projectPanelActions.REQUEST_ITEMS());
-            dispatch(dialogActions.CLOSE_DIALOG({ id: COLLECTION_COPY_DIALOG }));
-            dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Collection has been copied', hideDuration: 2000 }));
+            dispatch(dialogActions.CLOSE_DIALOG({ id: COLLECTION_COPY_FORM_NAME }));
+            return collection;
         } catch (e) {
             const error = getCommonResourceServiceError(e);
             if (error === CommonResourceServiceError.UNIQUE_VIOLATION) {
-                dispatch(stopSubmit(COLLECTION_COPY_DIALOG, { ownerUuid: 'A collection with the same name already exists in the target project.' }));
+                dispatch(stopSubmit(COLLECTION_COPY_FORM_NAME, { ownerUuid: 'A collection with the same name already exists in the target project.' }));
             } else {
-                dispatch(dialogActions.CLOSE_DIALOG({ id: COLLECTION_COPY_DIALOG }));
-                dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Could not copy the collection', hideDuration: 2000 }));
+                dispatch(dialogActions.CLOSE_DIALOG({ id: COLLECTION_COPY_FORM_NAME }));
+                throw new Error('Could not copy the collection.');
             }
+            return ;
         }
     };
\ No newline at end of file