X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9fbb245286171bc55fed5b5104361a1869a1d76b..a459a376f98f7cb8741c8ab1057c9578e59dc327:/src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts diff --git a/src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts b/src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts index 413fedfc1c..e441959cc8 100644 --- a/src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts +++ b/src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts @@ -11,10 +11,10 @@ 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, initialize } 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"; +import { resourcesDataActions } from "~/store/resources-data/resources-data-actions"; export const collectionPanelFilesAction = unionize({ SET_COLLECTION_FILES: ofType(), @@ -30,6 +30,7 @@ export const loadCollectionFiles = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const files = await services.collectionService.files(uuid); dispatch(collectionPanelFilesAction.SET_COLLECTION_FILES(files)); + dispatch(resourcesDataActions.SET_FILES({ uuid, files })); }; export const removeCollectionFiles = (filePaths: string[]) => @@ -45,7 +46,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(removeCollectionFiles(paths)); }; @@ -94,7 +96,7 @@ export interface RenameFileDialogData { export const openRenameFileDialog = (data: RenameFileDialogData) => (dispatch: Dispatch) => { - dispatch(reset(RENAME_FILE_DIALOG)); + dispatch(initialize(RENAME_FILE_DIALOG, data)); dispatch(dialogActions.OPEN_DIALOG({ id: RENAME_FILE_DIALOG, data })); }; @@ -103,16 +105,19 @@ export const renameFile = (newName: string) => const dialog = getDialog(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(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(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' })); + } } } };