Make file ids unique, fix bad file download url
[arvados-workbench2.git] / src / store / collection-panel / collection-panel-files / collection-panel-files-actions.ts
index 413fedfc1c08eccd17fe24f4c22aecd03d5a000e..99ab6829fa4ff66f96d715691479f34e0297432d 100644 (file)
@@ -11,10 +11,9 @@ import { snackbarActions } from "../../snackbar/snackbar-actions";
 import { dialogActions } from '../../dialog/dialog-actions';
 import { getNodeValue } from "~/models/tree";
 import { filterCollectionFilesBySelection } from './collection-panel-files-state';
-import { startSubmit, initialize, stopSubmit, reset } from 'redux-form';
-import { getCommonResourceServiceError, CommonResourceServiceError } from "~/common/api/common-resource-service";
+import { startSubmit, stopSubmit, reset } from 'redux-form';
 import { getDialog } from "~/store/dialog/dialog-reducer";
-import { resetPickerProjectTree } from '~/store/project-tree-picker/project-tree-picker-actions';
+import { getFileFullPath } from "~/services/collection-service/collection-service-files-response";
 
 export const collectionPanelFilesAction = unionize({
     SET_COLLECTION_FILES: ofType<CollectionFilesTree>(),
@@ -45,7 +44,8 @@ export const removeCollectionFiles = (filePaths: string[]) =>
 
 export const removeCollectionsSelectedFiles = () =>
     (dispatch: Dispatch, getState: () => RootState) => {
-        const paths = filterCollectionFilesBySelection(getState().collectionPanelFiles, true).map(file => file.id);
+        const paths = filterCollectionFilesBySelection(getState().collectionPanelFiles, true)
+            .map(getFileFullPath);
         dispatch<any>(removeCollectionFiles(paths));
     };
 
@@ -103,16 +103,19 @@ export const renameFile = (newName: string) =>
         const dialog = getDialog<RenameFileDialogData>(getState().dialog, RENAME_FILE_DIALOG);
         const currentCollection = getState().collectionPanel.item;
         if (dialog && currentCollection) {
-            dispatch(startSubmit(RENAME_FILE_DIALOG));
-            const oldPath = dialog.data.id;
-            const newPath = dialog.data.id.replace(dialog.data.name, newName);
-            try {
-                await services.collectionService.moveFile(currentCollection.uuid, oldPath, newPath);
-                dispatch<any>(loadCollectionFiles(currentCollection.uuid));
-                dispatch(dialogActions.CLOSE_DIALOG({ id: RENAME_FILE_DIALOG }));
-                dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'File name changed.', hideDuration: 2000 }));
-            } catch (e) {
-                dispatch(stopSubmit(RENAME_FILE_DIALOG, { name: 'Could not rename the file' }));
+            const file = getNodeValue(dialog.data.id)(getState().collectionPanelFiles);
+            if (file) {
+                dispatch(startSubmit(RENAME_FILE_DIALOG));
+                const oldPath = getFileFullPath(file);
+                const newPath = getFileFullPath({ ...file, name: newName });
+                try {
+                    await services.collectionService.moveFile(currentCollection.uuid, oldPath, newPath);
+                    dispatch<any>(loadCollectionFiles(currentCollection.uuid));
+                    dispatch(dialogActions.CLOSE_DIALOG({ id: RENAME_FILE_DIALOG }));
+                    dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'File name changed.', hideDuration: 2000 }));
+                } catch (e) {
+                    dispatch(stopSubmit(RENAME_FILE_DIALOG, { name: 'Could not rename the file' }));
+                }
             }
         }
     };