X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4ec55841b965ae33aad66479bf4d4ad41e6a0b62..db70ee7d6c518bad725f4d84ea586a3e420733fe:/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx
diff --git a/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx b/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx
index 17417bf554..75cf40c641 100644
--- a/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx
+++ b/services/workbench2/src/views-components/projects-tree-picker/tree-picker-field.tsx
@@ -9,7 +9,9 @@ import { WrappedFieldProps } from 'redux-form';
import { ProjectsTreePicker } from 'views-components/projects-tree-picker/projects-tree-picker';
import { ProjectsTreePickerItem } from 'store/tree-picker/tree-picker-middleware';
import { PickerIdProp } from 'store/tree-picker/picker-id';
-import { getFileOperationLocation } from "store/tree-picker/tree-picker-actions";
+import { FileOperationLocation, getFileOperationLocation } from "store/tree-picker/tree-picker-actions";
+import { connect } from "react-redux";
+import { Dispatch } from "redux";
export const ProjectTreePickerField = (props: WrappedFieldProps & PickerIdProp) =>
@@ -17,6 +19,7 @@ export const ProjectTreePickerField = (props: WrappedFieldProps & PickerIdProp)
{props.meta.dirty && props.meta.error &&
@@ -35,6 +38,7 @@ export const CollectionTreePickerField = (props: WrappedFieldProps & PickerIdPro
{props.meta.dirty && props.meta.error &&
@@ -44,24 +48,41 @@ export const CollectionTreePickerField = (props: WrappedFieldProps & PickerIdPro
;
-const handleDirectoryChange = (props: WrappedFieldProps) =>
- (_: any, { data }: TreeItem) => {
- props.input.onChange(getFileOperationLocation(data) || '');
- }
+type ProjectsTreePickerActionProps = {
+ getFileOperationLocation: (item: ProjectsTreePickerItem) => Promise;
+}
-export const DirectoryTreePickerField = (props: WrappedFieldProps & PickerIdProp) =>
-
-
-
- {props.meta.dirty && props.meta.error &&
-
- {props.meta.error}
- }
-
-
;
+const projectsTreePickerMapDispatchToProps = (dispatch: Dispatch): ProjectsTreePickerActionProps => ({
+ getFileOperationLocation: (item: ProjectsTreePickerItem) => dispatch(getFileOperationLocation(item)),
+});
+
+type ProjectsTreePickerCombinedProps = ProjectsTreePickerActionProps & WrappedFieldProps & PickerIdProp;
+
+export const DirectoryTreePickerField = connect(null, projectsTreePickerMapDispatchToProps)(
+ class DirectoryTreePickerFieldComponent extends React.Component {
+
+ handleDirectoryChange = (props: WrappedFieldProps) =>
+ async (_: any, { data }: TreeItem) => {
+ const location = await this.props.getFileOperationLocation(data);
+ props.input.onChange(location || '');
+ }
+
+ render() {
+ return
+
+
+ {this.props.meta.dirty && this.props.meta.error &&
+
+ {this.props.meta.error}
+ }
+
+
;
+ }
+ });