From 7a398ca38d58b3f81c05cb72a241095a94fe0ca9 Mon Sep 17 00:00:00 2001 From: Daniel Kos Date: Mon, 6 Aug 2018 21:27:09 +0200 Subject: [PATCH] Fix renaming collection files Feature #13967 Arvados-DCO-1.1-Signed-off-by: Daniel Kos --- .../collection-panel-files.tsx | 25 +++++++++++++++---- .../collection-files-service.ts | 24 ++++++++++++------ 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/components/collection-panel-files/collection-panel-files.tsx b/src/components/collection-panel-files/collection-panel-files.tsx index 17bbe85e..afe9e851 100644 --- a/src/components/collection-panel-files/collection-panel-files.tsx +++ b/src/components/collection-panel-files/collection-panel-files.tsx @@ -8,6 +8,10 @@ import { FileTreeData } from '../file-tree/file-tree-data'; import { FileTree } from '../file-tree/file-tree'; import { IconButton, Grid, Typography, StyleRulesCallback, withStyles, WithStyles, CardHeader, CardContent, Card, Button } from '@material-ui/core'; import { CustomizeTableIcon } from '../icon/icon'; +import { connect, DispatchProp } from "react-redux"; +import { Dispatch } from "redux"; +import { RootState } from "../../store/store"; +import { ServiceRepository } from "../../services/services"; export interface CollectionPanelFilesProps { items: Array>; @@ -36,14 +40,24 @@ const styles: StyleRulesCallback = theme => ({ } }); -export const CollectionPanelFiles = withStyles(styles)( - ({ onItemMenuOpen, onOptionsMenuOpen, classes, ...treeProps }: CollectionPanelFilesProps & WithStyles) => +const renameFile = () => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + services.collectionFilesService.renameTest(); +}; + + +export const CollectionPanelFiles = + connect()( + withStyles(styles)( + ({ onItemMenuOpen, onOptionsMenuOpen, classes, dispatch, ...treeProps }: CollectionPanelFilesProps & DispatchProp & WithStyles) => { + dispatch(renameFile()); + }} + variant='raised' color='primary' size='small'> Upload data @@ -65,4 +79,5 @@ export const CollectionPanelFiles = withStyles(styles)( - ); + ) +); diff --git a/src/services/collection-files-service/collection-files-service.ts b/src/services/collection-files-service/collection-files-service.ts index 3b320eb6..dfeed0b7 100644 --- a/src/services/collection-files-service/collection-files-service.ts +++ b/src/services/collection-files-service/collection-files-service.ts @@ -6,6 +6,8 @@ import { CollectionService } from "../collection-service/collection-service"; import { parseKeepManifestText, stringifyKeepManifest } from "./collection-manifest-parser"; import { mapManifestToCollectionFilesTree } from "./collection-manifest-mapper"; import { CollectionFile } from "../../models/collection-file"; +import { CommonResourceService } from "../../common/api/common-resource-service"; +import * as _ from "lodash"; export class CollectionFilesService { @@ -26,19 +28,21 @@ export class CollectionFilesService { async renameFile(collectionUuid: string, file: { name: string, path: string }, newName: string) { const collection = await this.collectionService.get(collectionUuid); const manifest = parseKeepManifestText(collection.manifestText); - const updatedManifest = manifest.map(stream => - stream.name === file.path + const updatedManifest = manifest.map( + stream => stream.name === file.path ? { ...stream, - files: stream.files.map(f => - f.name === file.name + files: stream.files.map( + f => f.name === file.name ? { ...f, name: newName } - : f) + : f + ) } : stream ); const manifestText = stringifyKeepManifest(updatedManifest); - return this.collectionService.update(collectionUuid, { ...collection, manifestText }); + const data = { ...collection, manifestText }; + return this.collectionService.update(collectionUuid, CommonResourceService.mapKeys(_.snakeCase)(data)); } async deleteFile(collectionUuid: string, file: { name: string, path: string }) { @@ -56,4 +60,10 @@ export class CollectionFilesService { return this.collectionService.update(collectionUuid, { manifestText }); } -} \ No newline at end of file + renameTest() { + const u = this.renameFile('qr1hi-4zz18-n0sx074erl4p0ph', { + name: 'extracted2.txt.png', + path: '' + }, 'extracted-new.txt.png'); + } +} -- 2.30.2