diff --git a/frontend/src/components/file-chooser/file-chooser.js b/frontend/src/components/file-chooser/file-chooser.js index 7fc2dfe91aa..de973045c9e 100644 --- a/frontend/src/components/file-chooser/file-chooser.js +++ b/frontend/src/components/file-chooser/file-chooser.js @@ -7,6 +7,7 @@ import { Utils } from '../../utils/utils'; import toaster from '../toast'; import RepoInfo from '../../models/repo-info'; import RepoListView from './repo-list-view'; +import RecentlyUsedListView from './recently-used-list-view'; import Loading from '../loading'; import SearchedListView from './searched-list-view'; @@ -416,7 +417,7 @@ class FileChooser extends React.Component { renderRepoListView = () => { const { mode, currentPath, isShowFile, fileSuffixes } = this.props; const { isCurrentRepoShow, isOtherRepoShow, currentRepoInfo, repoList, selectedRepo, selectedPath, selectedItemInfo } = this.state; - const recentlyUsedRepos = JSON.parse(localStorage.getItem('recently-used-repos')) || []; + const recentlyUsedList = JSON.parse(localStorage.getItem('recently-used-list')) || []; return (
@@ -520,16 +521,10 @@ class FileChooser extends React.Component { )} {mode === 'recently_used' && (
-
)} diff --git a/frontend/src/components/file-chooser/recently-used-list-item.js b/frontend/src/components/file-chooser/recently-used-list-item.js new file mode 100644 index 00000000000..005f1cbfa46 --- /dev/null +++ b/frontend/src/components/file-chooser/recently-used-list-item.js @@ -0,0 +1,26 @@ +import React from 'react'; + +const RecentlyUsedListItem = ({ path, isSelected, onItemClick }) => { + const title = path.split('/').pop(); + + const handleItemClick = () => { + onItemClick(path); + }; + + return ( +
  • +
    +
    + + + +
    +
    + {title} +
    +
    +
  • + ); +}; + +export default RecentlyUsedListItem; diff --git a/frontend/src/components/file-chooser/recently-used-list-view.js b/frontend/src/components/file-chooser/recently-used-list-view.js new file mode 100644 index 00000000000..85a8a3fdabc --- /dev/null +++ b/frontend/src/components/file-chooser/recently-used-list-view.js @@ -0,0 +1,28 @@ +import React, { useState } from 'react'; +import RecentlyUsedListItem from './recently-used-list-item'; + +const RecentlyUsedListView = ({ recentlyUsedList, selectedRepo, onDirentItemClick }) => { + const [selectedItem, setSelectedItem] = useState(null); + + const onItemClick = (path) => { + setSelectedItem(path); + onDirentItemClick(selectedRepo, path); + }; + + return ( + + ); +}; + +export default RecentlyUsedListView; diff --git a/frontend/src/css/file-chooser.css b/frontend/src/css/file-chooser.css index bd1b03fb557..95750514f42 100644 --- a/frontend/src/css/file-chooser.css +++ b/frontend/src/css/file-chooser.css @@ -63,6 +63,10 @@ transition: color 0.3s ease, background-color 0.3s ease; } +.file-chooser-item .recently-used .item-left-icon { + padding: 0 0.25rem 0 0.5rem; +} + .file-chooser-search-close { position: absolute; top: -0.5rem; diff --git a/frontend/src/pages/lib-content-view/lib-content-view.js b/frontend/src/pages/lib-content-view/lib-content-view.js index b4ae747f71a..55c1e8c6713 100644 --- a/frontend/src/pages/lib-content-view/lib-content-view.js +++ b/frontend/src/pages/lib-content-view/lib-content-view.js @@ -715,16 +715,16 @@ class LibContentView extends React.Component { }); }; - updateRecentlyUsedRepos = (destRepo) => { - const recentlyUsed = JSON.parse(localStorage.getItem('recently-used-repos')) || []; - const updatedRecentlyUsed = [destRepo, ...recentlyUsed.filter(repo => repo.repo_id !== destRepo.repo_id)]; + updateRecentlyUsedRepos = (destPath) => { + const recentlyUsed = JSON.parse(localStorage.getItem('recently-used-list')) || []; + const updatedRecentlyUsed = [destPath, ...recentlyUsed.filter(path => path !== destPath)]; const seen = new Set(); - const filteredRecentlyUsed = updatedRecentlyUsed.filter(repo => { - if (seen.has(repo.repo_id)) { + const filteredRecentlyUsed = updatedRecentlyUsed.filter(path => { + if (seen.has(path)) { return false; } else { - seen.add(repo.repo_id); + seen.add(path); return true; } }); @@ -733,7 +733,7 @@ class LibContentView extends React.Component { updatedRecentlyUsed.pop(); // Limit to 10 recent directories } - localStorage.setItem('recently-used-repos', JSON.stringify(filteredRecentlyUsed)); + localStorage.setItem('recently-used-list', JSON.stringify(filteredRecentlyUsed)); }; // toolbar operations @@ -775,7 +775,7 @@ class LibContentView extends React.Component { toaster.success(message); } - this.updateRecentlyUsedRepos(destRepo); + this.updateRecentlyUsedRepos(destDirentPath); }).catch((error) => { if (!error.response.data.lib_need_decrypt) { @@ -1247,7 +1247,7 @@ class LibContentView extends React.Component { toaster.success(message); } - this.updateRecentlyUsedRepos(destRepo); + this.updateRecentlyUsedRepos(moveToDirentPath); }).catch((error) => { if (!error.response.data.lib_need_decrypt) {