mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-24 12:58:34 +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 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>
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user