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 (
+
+ {recentlyUsedList.length > 0 && recentlyUsedList.map((path, index) => {
+ 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) {