1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-24 04:48:03 +00:00

optimize starred items api (#5909)

* optimize starred items api

* optimize code
This commit is contained in:
WJH
2024-01-22 23:20:09 +08:00
committed by GitHub
parent 03b11b6674
commit 767948305f
2 changed files with 28 additions and 24 deletions

View File

@@ -1,4 +1,4 @@
import React, { Component } from 'react'; import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap'; import { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';
import { Link, navigate } from '@gatsbyjs/reach-router'; import { Link, navigate } from '@gatsbyjs/reach-router';
@@ -79,7 +79,7 @@ class TableBody extends Component {
getThumbnails() { getThumbnails() {
let items = this.state.items.filter((item) => { 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) { if (items.length == 0) {
return ; return ;
@@ -215,12 +215,19 @@ class Item extends Component {
<img src={data.item_icon_url} alt={gettext('icon')} width="24" /> <img src={data.item_icon_url} alt={gettext('icon')} width="24" />
} }
</td> </td>
<Fragment>
{data.deleted ?
<td>
{data.obj_name}{' '}<span style={{color:'red'}}>{gettext('deleted')}</span>
</td> :
<td> <td>
{ data.is_dir ? { data.is_dir ?
<Link to={linkUrl}>{data.obj_name}</Link> : <Link to={linkUrl}>{data.obj_name}</Link> :
<a className="normal" href={data.dirent_view_url} target="_blank" rel="noreferrer">{data.obj_name}</a> <a className="normal" href={linkUrl} target="_blank" rel="noreferrer">{data.obj_name}</a>
} }
</td> </td>
}
</Fragment>
<td>{data.repo_name}</td> <td>{data.repo_name}</td>
<td dangerouslySetInnerHTML={{__html:data.mtime_relative}}></td> <td dangerouslySetInnerHTML={{__html:data.mtime_relative}}></td>
<td> <td>

View File

@@ -43,7 +43,7 @@ class StarredItems(APIView):
repo_id = starred_item.repo_id repo_id = starred_item.repo_id
item_info['repo_id'] = repo_id item_info['repo_id'] = repo_id
item_info['repo_name'] = repo.repo_name if repo else '' 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 item_info['is_dir'] = starred_item.is_dir
path = starred_item.path path = starred_item.path
@@ -53,12 +53,14 @@ class StarredItems(APIView):
item_info['obj_name'] = repo.repo_name if repo else '' item_info['obj_name'] = repo.repo_name if repo else ''
item_info['mtime'] = timestamp_to_isoformat_timestr(repo.last_modified) if \ item_info['mtime'] = timestamp_to_isoformat_timestr(repo.last_modified) if \
repo else '' repo else ''
item_info['deleted'] = False if repo else True
else: else:
item_info['obj_name'] = os.path.basename(path.rstrip('/')) 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 \ item_info['mtime'] = timestamp_to_isoformat_timestr(dirent.mtime) if \
dirent else '' 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']) file_type, file_ext = get_file_type_and_ext(item_info['obj_name'])
if file_type in (IMAGE, XMIND) or \ if file_type in (IMAGE, XMIND) or \
(file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL): (file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL):
@@ -88,6 +90,8 @@ class StarredItems(APIView):
repo = seafile_api.get_repo(repo_id) repo = seafile_api.get_repo(repo_id)
if repo: if repo:
repo_dict[repo_id] = repo repo_dict[repo_id] = repo
else:
repo_dict[repo_id] = ''
starred_repos = [] starred_repos = []
starred_folders = [] starred_folders = []
@@ -95,17 +99,7 @@ class StarredItems(APIView):
for starred_item in all_starred_items: for starred_item in all_starred_items:
repo_id = starred_item.repo_id repo_id = starred_item.repo_id
if repo_id not in repo_dict:
continue
path = starred_item.path 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] repo = repo_dict[repo_id]
item_info = self.get_starred_item_info(repo, starred_item) item_info = self.get_starred_item_info(repo, starred_item)
@@ -212,10 +206,13 @@ class StarredItems(APIView):
return api_error(status.HTTP_400_BAD_REQUEST, error_msg) return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
# handler path if item exist # handler path if item exist
try:
if seafile_api.get_dir_id_by_path(repo_id, path): if seafile_api.get_dir_id_by_path(repo_id, path):
path = normalize_dir_path(path) path = normalize_dir_path(path)
elif seafile_api.get_file_id_by_path(repo_id, path): elif seafile_api.get_file_id_by_path(repo_id, path):
path = normalize_file_path(path) path = normalize_file_path(path)
except Exception as e:
pass
email = request.user.username email = request.user.username