diff --git a/frontend/src/components/dialog/move-dirent-dialog.js b/frontend/src/components/dialog/move-dirent-dialog.js index 014e5852cf..889d1fdb6d 100644 --- a/frontend/src/components/dialog/move-dirent-dialog.js +++ b/frontend/src/components/dialog/move-dirent-dialog.js @@ -95,7 +95,7 @@ class MoveDirent extends React.Component { return; } - this.props.onItemsMove(repo, selectedPath); + this.props.onItemsMove(repo, selectedPath, true); this.toggle(); }; @@ -131,7 +131,7 @@ class MoveDirent extends React.Component { return; } - this.props.onItemMove(repo, this.props.dirent, selectedPath, this.props.path); + this.props.onItemMove(repo, this.props.dirent, selectedPath, this.props.path, true); this.toggle(); }; diff --git a/frontend/src/components/file-chooser/recently-used-list-item.js b/frontend/src/components/file-chooser/recently-used-list-item.js index d73f2bebab..b92bbbb99b 100644 --- a/frontend/src/components/file-chooser/recently-used-list-item.js +++ b/frontend/src/components/file-chooser/recently-used-list-item.js @@ -1,7 +1,12 @@ import React from 'react'; +import { Utils } from '../../utils/utils'; const RecentlyUsedListItem = ({ item, isSelected, onItemClick }) => { - const title = item.path === '/' ? item.path : item.path.split('/').pop(); + if (!item || typeof item.path !== 'string') { + return ''; + } + + const title = Utils.getFileName(item.path); const handleItemClick = () => { onItemClick(item.repo, item.path); diff --git a/frontend/src/components/file-chooser/recently-used-list-view.js b/frontend/src/components/file-chooser/recently-used-list-view.js index 18ff113cfb..74d77ad20b 100644 --- a/frontend/src/components/file-chooser/recently-used-list-view.js +++ b/frontend/src/components/file-chooser/recently-used-list-view.js @@ -1,9 +1,26 @@ -import React, { useState } from 'react'; +import React, { useState, useMemo } from 'react'; +import PropTypes from 'prop-types'; import RecentlyUsedListItem from './recently-used-list-item'; -const RecentlyUsedListView = ({ recentlyUsedList, onDirentItemClick }) => { +const RecentlyUsedListView = ({ currentRepoInfo, repoList, onDirentItemClick }) => { const [selectedItem, setSelectedItem] = useState(null); + const recentlyUsedList = useMemo(() => { + const list = JSON.parse(localStorage.getItem('recently-used-list')) || []; + const allRepos = [...repoList, currentRepoInfo]; + + // list: [{repo_id: 'xxx', path: 'xxx'}, ...], replace repo_id with repo object + return list + .map(item => { + const repo = allRepos.find(repo => repo.repo_id === item.repo_id); + if (repo) { + return { path: item.path, repo: repo }; + } + return null; + }) + .filter(item => item !== null); + }, [currentRepoInfo, repoList]); + const onItemClick = (repo, path) => { setSelectedItem(path); onDirentItemClick(repo, path); @@ -25,4 +42,10 @@ const RecentlyUsedListView = ({ recentlyUsedList, onDirentItemClick }) => { ); }; +RecentlyUsedListView.propTypes = { + currentRepoInfo: PropTypes.object.isRequired, + repoList: PropTypes.array.isRequired, + onDirentItemClick: PropTypes.func.isRequired, +}; + export default RecentlyUsedListView; diff --git a/frontend/src/components/file-chooser/repo-list-wrapper.js b/frontend/src/components/file-chooser/repo-list-wrapper.js index ff4b38aad2..7e5586fa50 100644 --- a/frontend/src/components/file-chooser/repo-list-wrapper.js +++ b/frontend/src/components/file-chooser/repo-list-wrapper.js @@ -23,18 +23,6 @@ const RepoListWrapper = (props) => { searchStatus, searchResults, onSearchedItemClick, onSearchedItemDoubleClick, selectedSearchedRepo, newFolderName } = props; - const renderRecentlyUsed = () => { - const recentlyUsedList = JSON.parse(localStorage.getItem('recently-used-list')) || []; - return ( -