15685: Merge branch 'master' into 15685-file-renaming-empty-name
[arvados-workbench2.git] / src / views-components / rename-file-dialog / rename-file-dialog.tsx
index f23d4c06a4acabaacd8c7812a63b4f1f0c453b62..d05c110b7b3971e44e0aed7d700182e96d9b7fcb 100644 (file)
@@ -3,33 +3,24 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import * as React from 'react';
-import { Dispatch, compose } from 'redux';
-import { reduxForm, reset, startSubmit, stopSubmit, InjectedFormProps, Field } from 'redux-form';
+import { compose } from 'redux';
+import { reduxForm, InjectedFormProps, Field } from 'redux-form';
 import { withDialog, WithDialogProps } from '~/store/dialog/with-dialog';
-import { dialogActions } from "~/store/dialog/dialog-actions";
 import { FormDialog } from '~/components/form-dialog/form-dialog';
 import { DialogContentText } from '@material-ui/core';
 import { TextField } from '~/components/text-field/text-field';
-
-export const RENAME_FILE_DIALOG = 'renameFileDialog';
-
-export const openRenameFileDialog = (originalName: string) =>
-    (dispatch: Dispatch) => {
-        dispatch(reset(RENAME_FILE_DIALOG));
-        dispatch(dialogActions.OPEN_DIALOG({ id: RENAME_FILE_DIALOG, data: originalName }));
-    };
+import { RENAME_FILE_DIALOG, RenameFileDialogData, renameFile } from '~/store/collection-panel/collection-panel-files/collection-panel-files-actions';
+import { WarningCollection } from '~/components/warning-collection/warning-collection';
 
 export const RenameFileDialog = compose(
     withDialog(RENAME_FILE_DIALOG),
     reduxForm({
         form: RENAME_FILE_DIALOG,
-        onSubmit: (data, dispatch) => {
-            dispatch(startSubmit(RENAME_FILE_DIALOG));
-            // TODO: call collection file renaming action here
-            setTimeout(() => dispatch(stopSubmit(RENAME_FILE_DIALOG, { name: 'Invalid name' })), 2000);
+        onSubmit: (data: { name: string }, dispatch) => {
+            dispatch<any>(renameFile(data.name));
         }
     })
-)((props: WithDialogProps<string> & InjectedFormProps<{ name: string }>) =>
+)((props: WithDialogProps<RenameFileDialogData> & InjectedFormProps<{ name: string }>) =>
     <FormDialog
         dialogTitle='Rename'
         formFields={RenameDialogFormFields}
@@ -37,12 +28,14 @@ export const RenameFileDialog = compose(
         {...props}
     />);
 
-const RenameDialogFormFields = (props: WithDialogProps<string>) => <>
+const RenameDialogFormFields = (props: WithDialogProps<RenameFileDialogData>) => <>
     <DialogContentText>
-        {`Please, enter a new name for ${props.data}`}
+        {`Please, enter a new name for ${props.data.name}`}
     </DialogContentText>
     <Field
         name='name'
         component={TextField}
+        autoFocus={true}
     />
+    <WarningCollection text="Renaming a file will change the collection's content address." />
 </>;