diff --git a/frontend/src/components/file-chooser/file-chooser.js b/frontend/src/components/file-chooser/file-chooser.js index 0d4ea17b09..baba7f8455 100644 --- a/frontend/src/components/file-chooser/file-chooser.js +++ b/frontend/src/components/file-chooser/file-chooser.js @@ -297,6 +297,9 @@ class FileChooser extends React.Component { } onSearchedItemDoubleClick = (item) => { + if (item.type !== 'dir') { + return; + } let selectedItemInfo = { repoID: item.repo_id, diff --git a/frontend/src/components/file-chooser/repo-list-item.js b/frontend/src/components/file-chooser/repo-list-item.js index 5e10ad369b..ba7ddc9b35 100644 --- a/frontend/src/components/file-chooser/repo-list-item.js +++ b/frontend/src/components/file-chooser/repo-list-item.js @@ -34,7 +34,13 @@ class RepoListItem extends React.Component { let repoID = this.props.repo.repo_id; seafileAPI.listDir(repoID, '/').then(res => { let tree = this.state.treeData.clone(); - let direntList = res.data.dirent_list.filter(item => item.type === 'dir'); + let direntList = []; + if (this.props.isShowFile === true) { + direntList = res.data.dirent_list; + } else { + direntList = res.data.dirent_list.filter(item => item.type === 'dir'); + } + this.addResponseListToNode(direntList, tree.root); this.setState({treeData: tree}); }); @@ -65,7 +71,12 @@ class RepoListItem extends React.Component { node = tree.getNodeByPath(node.path); if (!node.isLoaded) { seafileAPI.listDir(repoID, node.path).then(res => { - let direntList = res.data.dirent_list.filter(item => item.type === 'dir'); + let direntList = []; + if (this.props.isShowFile === true) { + direntList = res.data.dirent_list; + } else { + direntList = res.data.dirent_list.filter(item => item.type === 'dir'); + } this.addResponseListToNode(direntList, node); this.setState({treeData: tree}); }); diff --git a/frontend/src/components/file-chooser/tree-list-item.js b/frontend/src/components/file-chooser/tree-list-item.js index 256b391876..c6d9ea4fab 100644 --- a/frontend/src/components/file-chooser/tree-list-item.js +++ b/frontend/src/components/file-chooser/tree-list-item.js @@ -9,6 +9,8 @@ const propTypes = { node: PropTypes.object.isRequired, onNodeCollapse: PropTypes.func.isRequired, onNodeExpanded: PropTypes.func.isRequired, + filePath: PropTypes.string, + fileSuffixes: PropTypes.array, }; class TreeViewItem extends React.Component { @@ -78,13 +80,22 @@ class TreeViewItem extends React.Component { let isCurrentRepo = this.props.selectedRepo.repo_id === this.props.repo.repo_id; let isCurrentPath = this.props.selectedPath === this.state.filePath; + const fileName = node.object.name; + if (this.props.fileSuffixes && fileName && fileName.indexOf('.') !== -1) { + const suffix = fileName.slice(fileName.lastIndexOf('.') + 1).toLowerCase(); + if (!this.props.fileSuffixes.includes(suffix)) return null; + } + return(