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:
@@ -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 {
|
||||
<img src={data.item_icon_url} alt={gettext('icon')} width="24" />
|
||||
}
|
||||
</td>
|
||||
<Fragment>
|
||||
{data.deleted ?
|
||||
<td>
|
||||
{data.obj_name}{' '}<span style={{color:'red'}}>{gettext('deleted')}</span>
|
||||
</td> :
|
||||
<td>
|
||||
{ data.is_dir ?
|
||||
<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>
|
||||
}
|
||||
</Fragment>
|
||||
<td>{data.repo_name}</td>
|
||||
<td dangerouslySetInnerHTML={{__html:data.mtime_relative}}></td>
|
||||
<td>
|
||||
|
@@ -43,7 +43,7 @@ class StarredItems(APIView):
|
||||
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 @@ class StarredItems(APIView):
|
||||
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 @@ class StarredItems(APIView):
|
||||
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 @@ class StarredItems(APIView):
|
||||
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 @@ class StarredItems(APIView):
|
||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||
|
||||
# handler path if item exist
|
||||
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
|
||||
|
||||
|
Reference in New Issue
Block a user