diff --git a/frontend/src/pages/starred/starred.js b/frontend/src/pages/starred/starred.js
index 8478d9fe22b..f574958734e 100644
--- a/frontend/src/pages/starred/starred.js
+++ b/frontend/src/pages/starred/starred.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';
import { Link, navigate } from '@gatsbyjs/reach-router';
@@ -79,7 +79,7 @@ class TableBody extends Component {
getThumbnails() {
let items = this.state.items.filter((item) => {
- return (Utils.imageCheck(item.obj_name) || (enableVideoThumbnail && Utils.videoCheck(item.obj_name))) && !item.repo_encrypted && !item.encoded_thumbnail_src;
+ return (Utils.imageCheck(item.obj_name) || (enableVideoThumbnail && Utils.videoCheck(item.obj_name))) && !item.repo_encrypted && !item.encoded_thumbnail_src && !item.deleted;
});
if (items.length == 0) {
return ;
@@ -215,12 +215,19 @@ class Item extends Component {
}
-
- { data.is_dir ?
- {data.obj_name} :
- {data.obj_name}
+
+ {data.deleted ?
+
+ {data.obj_name}{' '}{gettext('deleted')}
+ | :
+
+ { data.is_dir ?
+ {data.obj_name} :
+ {data.obj_name}
+ }
+ |
}
- |
+
{data.repo_name} |
|
diff --git a/seahub/api2/endpoints/starred_items.py b/seahub/api2/endpoints/starred_items.py
index ba60224a22e..0e08e1cfc1e 100644
--- a/seahub/api2/endpoints/starred_items.py
+++ b/seahub/api2/endpoints/starred_items.py
@@ -43,7 +43,7 @@ def get_starred_item_info(self, repo, starred_item):
repo_id = starred_item.repo_id
item_info['repo_id'] = repo_id
item_info['repo_name'] = repo.repo_name if repo else ''
- item_info['repo_encrypted'] = repo.encrypted
+ item_info['repo_encrypted'] = repo.encrypted if repo else False
item_info['is_dir'] = starred_item.is_dir
path = starred_item.path
@@ -53,12 +53,14 @@ def get_starred_item_info(self, repo, starred_item):
item_info['obj_name'] = repo.repo_name if repo else ''
item_info['mtime'] = timestamp_to_isoformat_timestr(repo.last_modified) if \
repo else ''
+ item_info['deleted'] = False if repo else True
else:
item_info['obj_name'] = os.path.basename(path.rstrip('/'))
- dirent = seafile_api.get_dirent_by_path(repo_id, path)
+ dirent = seafile_api.get_dirent_by_path(repo_id, path) if repo else ''
item_info['mtime'] = timestamp_to_isoformat_timestr(dirent.mtime) if \
dirent else ''
- if not starred_item.is_dir:
+ item_info['deleted'] = False if dirent else True
+ if dirent and not starred_item.is_dir:
file_type, file_ext = get_file_type_and_ext(item_info['obj_name'])
if file_type in (IMAGE, XMIND) or \
(file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL):
@@ -88,6 +90,8 @@ def get(self, request):
repo = seafile_api.get_repo(repo_id)
if repo:
repo_dict[repo_id] = repo
+ else:
+ repo_dict[repo_id] = ''
starred_repos = []
starred_folders = []
@@ -95,17 +99,7 @@ def get(self, request):
for starred_item in all_starred_items:
repo_id = starred_item.repo_id
- if repo_id not in repo_dict:
- continue
-
path = starred_item.path
- if starred_item.is_dir:
- if not seafile_api.get_dir_id_by_path(repo_id, path):
- continue
- else:
- if not seafile_api.get_file_id_by_path(repo_id, path):
- continue
-
repo = repo_dict[repo_id]
item_info = self.get_starred_item_info(repo, starred_item)
@@ -212,10 +206,13 @@ def delete(self, request):
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
# handler path if item exist
- if seafile_api.get_dir_id_by_path(repo_id, path):
- path = normalize_dir_path(path)
- elif seafile_api.get_file_id_by_path(repo_id, path):
- path = normalize_file_path(path)
+ try:
+ if seafile_api.get_dir_id_by_path(repo_id, path):
+ path = normalize_dir_path(path)
+ elif seafile_api.get_file_id_by_path(repo_id, path):
+ path = normalize_file_path(path)
+ except Exception as e:
+ pass
email = request.user.username
|