Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

optimize starred items api #5909

Merged
merged 2 commits into from
Jan 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions frontend/src/pages/starred/starred.js
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -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 ;
Expand Down Expand Up @@ -215,12 +215,19 @@ class Item extends Component {
<img src={data.item_icon_url} alt={gettext('icon')} width="24" />
}
</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>
<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={linkUrl} target="_blank" rel="noreferrer">{data.obj_name}</a>
}
</td>
}
</td>
</Fragment>
<td>{data.repo_name}</td>
<td dangerouslySetInnerHTML={{__html:data.mtime_relative}}></td>
<td>
Expand Down
31 changes: 14 additions & 17 deletions seahub/api2/endpoints/starred_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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):
Expand Down Expand Up @@ -88,24 +90,16 @@ 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 = []
starred_files = []
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)

Expand Down Expand Up @@ -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

Expand Down
Loading