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 { {gettext('icon')} } - - { 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