1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-22 08:47:22 +00:00

Repo optimized (#2664)

This commit is contained in:
杨顺强 2018-12-18 17:21:01 +08:00 committed by Daniel Pan
parent 3b43d2d534
commit ed5439a4e3
15 changed files with 83 additions and 78 deletions

View File

@ -25,7 +25,7 @@ class UserItem extends React.Component {
deleteShareItem = () => { deleteShareItem = () => {
let item = this.props.item; let item = this.props.item;
this.props.deleteShareItem(item.name); this.props.deleteShareItem(item.user_info.name);
} }
render() { render() {

View File

@ -1,8 +1,7 @@
import React, { Fragment } from 'react'; import React, { Fragment } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import cookie from 'react-cookies'; import cookie from 'react-cookies';
import { gettext, siteRoot } from '../../utils/constants'; import { gettext, siteRoot, username } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api';
import CommonToolbar from '../toolbar/common-toolbar'; import CommonToolbar from '../toolbar/common-toolbar';
import ViewModeToolbar from '../toolbar/view-mode-toolbar'; import ViewModeToolbar from '../toolbar/view-mode-toolbar';
import DirOperationToolBar from '../toolbar/dir-operation-toolbar'; import DirOperationToolBar from '../toolbar/dir-operation-toolbar';
@ -15,7 +14,7 @@ import ModalPortal from '../modal-portal';
import LibDecryptDialog from '../dialog/lib-decrypt-dialog'; import LibDecryptDialog from '../dialog/lib-decrypt-dialog';
const propTypes = { const propTypes = {
currentRepo: PropTypes.object, currentRepoInfo: PropTypes.object,
pathPrefix: PropTypes.array.isRequired, pathPrefix: PropTypes.array.isRequired,
path: PropTypes.string.isRequired, path: PropTypes.string.isRequired,
repoID: PropTypes.string.isRequired, repoID: PropTypes.string.isRequired,
@ -56,18 +55,15 @@ class DirPanel extends React.Component {
currentDirent: null, currentDirent: null,
currentMode: 'list', currentMode: 'list',
isDirentDetailShow: false, isDirentDetailShow: false,
isRepoOwner: true, isRepoOwner: false,
}; };
} }
componentDidMount() { componentDidMount() {
let currentRepo = this.props.currentRepo; let currentRepoInfo = this.props.currentRepoInfo;
if (currentRepo) { if (currentRepoInfo) {
seafileAPI.getAccountInfo().then(res => { let isRepoOwner = currentRepoInfo.owner_email === username;
let user_email = res.data.email; this.setState({isRepoOwner: isRepoOwner});
let isRepoOwner = currentRepo.owner_email === user_email;
this.setState({isRepoOwner: isRepoOwner});
});
} }
} }
@ -79,6 +75,7 @@ class DirPanel extends React.Component {
} }
onItemDetailsClose = () => { onItemDetailsClose = () => {
// todo there is bug when change item
this.setState({isDirentDetailShow: false}); this.setState({isDirentDetailShow: false});
} }
@ -171,7 +168,7 @@ class DirPanel extends React.Component {
path={this.props.path} path={this.props.path}
repoID={this.props.repoID} repoID={this.props.repoID}
direntList={this.props.direntList} direntList={this.props.direntList}
currentRepo={this.props.currentRepo} currentRepoInfo={this.props.currentRepoInfo}
isDirentListLoading={this.props.isDirentListLoading} isDirentListLoading={this.props.isDirentListLoading}
isAllItemSelected={this.props.isAllDirentSelected} isAllItemSelected={this.props.isAllDirentSelected}
isRepoOwner={this.state.isRepoOwner} isRepoOwner={this.state.isRepoOwner}

View File

@ -8,7 +8,7 @@ import toaster from '../toast';
import DirPanel from './dir-panel'; import DirPanel from './dir-panel';
import Dirent from '../../models/dirent'; import Dirent from '../../models/dirent';
import FileTag from '../../models/file-tag'; import FileTag from '../../models/file-tag';
import Repo from '../../models/repo'; import RepoInfo from '../../models/repo-info';
const propTypes = { const propTypes = {
pathPrefix: PropTypes.array.isRequired, pathPrefix: PropTypes.array.isRequired,
@ -31,7 +31,7 @@ class DirView extends React.Component {
isDirentSelected: false, isDirentSelected: false,
isAllDirentSelected: false, isAllDirentSelected: false,
isDirentListLoading: true, isDirentListLoading: true,
currentRepo: null, currentRepoInfo: null,
direntList: [], direntList: [],
selectedDirentList: [], selectedDirentList: [],
}; };
@ -50,16 +50,16 @@ class DirView extends React.Component {
let location = decodeURIComponent(window.location.href); let location = decodeURIComponent(window.location.href);
let repoID = this.props.repoID; let repoID = this.props.repoID;
seafileAPI.getRepoInfo(repoID).then(res => { seafileAPI.getRepoInfo(repoID).then(res => {
let repo = new Repo(res.data); let repoInfo = new RepoInfo(res.data);
this.setState({ this.setState({
repoID: repo.repo_id, currentRepoInfo: repoInfo,
repoName: repo.repo_name, repoID: repoInfo.repo_id,
permission: repo.permission === 'rw', repoName: repoInfo.repo_name,
currentRepo: repo, permission: repoInfo.permission === 'rw',
libNeedDecrypt: res.data.lib_need_decrypt, libNeedDecrypt: res.data.lib_need_decrypt,
}); });
let repoName = repo.repo_name; let repoName = repoInfo.repo_name;
let index = location.indexOf(repoName); let index = location.indexOf(repoName);
let path = location.slice(index + repoName.length); let path = location.slice(index + repoName.length);
this.setState({path: path}); this.setState({path: path});
@ -234,7 +234,11 @@ class DirView extends React.Component {
let repoID = this.state.repoID; let repoID = this.state.repoID;
seafileAPI.moveDir(repoID, destRepo.repo_id, destDirentPath, this.state.path, dirNames).then(() => { seafileAPI.moveDir(repoID, destRepo.repo_id, destDirentPath, this.state.path, dirNames).then(() => {
let direntList = this.deleteItems(dirNames); let direntList = this.deleteItems(dirNames);
this.setState({direntList: direntList}); this.setState({
direntList: direntList,
isDirentSelected: false,
selectedDirentList: [],
});
let message = gettext('Successfully moved %(name)s.'); let message = gettext('Successfully moved %(name)s.');
message = message.replace('%(name)s', dirNames); message = message.replace('%(name)s', dirNames);
toaster.success(message); toaster.success(message);
@ -264,7 +268,11 @@ class DirView extends React.Component {
let repoID = this.state.repoID; let repoID = this.state.repoID;
seafileAPI.deleteMutipleDirents(repoID, this.state.path, dirNames).then(res => { seafileAPI.deleteMutipleDirents(repoID, this.state.path, dirNames).then(res => {
let direntList = this.deleteItems(dirNames); let direntList = this.deleteItems(dirNames);
this.setState({direntList: direntList}); this.setState({
direntList: direntList,
isDirentSelected: false,
selectedDirentList: [],
});
}); });
} }
@ -453,7 +461,7 @@ class DirView extends React.Component {
return ( return (
<DirPanel <DirPanel
pathPrefix={this.props.pathPrefix} pathPrefix={this.props.pathPrefix}
currentRepo={this.state.currentRepo} currentRepoInfo={this.state.currentRepoInfo}
path={this.state.path} path={this.state.path}
pathExist={this.state.pathExit} pathExist={this.state.pathExit}
repoID={this.state.repoID} repoID={this.state.repoID}

View File

@ -6,7 +6,7 @@ import { Utils } from '../../utils/utils';
import EditFileTagDialog from '../dialog/edit-filetag-dialog'; import EditFileTagDialog from '../dialog/edit-filetag-dialog';
const propTypes = { const propTypes = {
repo: PropTypes.object.isRequired, repoInfo: PropTypes.object.isRequired,
repoID: PropTypes.string.isRequired, repoID: PropTypes.string.isRequired,
dirent: PropTypes.object.isRequired, dirent: PropTypes.object.isRequired,
direntType: PropTypes.string.isRequired, direntType: PropTypes.string.isRequired,
@ -26,9 +26,9 @@ class DetailListView extends React.Component {
} }
getDirentPostion = () => { getDirentPostion = () => {
let { repo } = this.props; let { repoInfo } = this.props;
let direntPath = this.getDirentPath(); let direntPath = this.getDirentPath();
let position = repo.repo_name; let position = repoInfo.repo_name;
if (direntPath !== '/') { if (direntPath !== '/') {
let index = direntPath.lastIndexOf('/'); let index = direntPath.lastIndexOf('/');
let path = direntPath.slice(0, index); let path = direntPath.slice(0, index);

View File

@ -4,7 +4,7 @@ import { Utils } from '../../utils/utils';
import { siteRoot } from '../../utils/constants'; import { siteRoot } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api'; import { seafileAPI } from '../../utils/seafile-api';
import DetailListView from './detail-list-view'; import DetailListView from './detail-list-view';
import Repo from '../../models/repo'; import RepoInfo from '../../models/repo-info';
import FileTag from '../../models/file-tag'; import FileTag from '../../models/file-tag';
import '../../css/dirent-detail.css'; import '../../css/dirent-detail.css';
@ -23,7 +23,7 @@ class DirentDetail extends React.Component {
this.state = { this.state = {
direntType: '', direntType: '',
direntDetail: '', direntDetail: '',
repo: null, repoInfo: null,
fileTagList: [], fileTagList: [],
}; };
} }
@ -32,8 +32,8 @@ class DirentDetail extends React.Component {
let { dirent, path, repoID } = this.props; let { dirent, path, repoID } = this.props;
let direntPath = Utils.joinPath(path, dirent.name); let direntPath = Utils.joinPath(path, dirent.name);
seafileAPI.getRepoInfo(repoID).then(res => { seafileAPI.getRepoInfo(repoID).then(res => {
let repo = new Repo(res.data); let repoInfo = new RepoInfo(res.data);
this.setState({repo: repo}); this.setState({repoInfo: repoInfo});
this.updateDetailView(dirent, direntPath); this.updateDetailView(dirent, direntPath);
}); });
} }
@ -89,7 +89,7 @@ class DirentDetail extends React.Component {
{this.state.direntDetail && {this.state.direntDetail &&
<div className="dirent-table-container"> <div className="dirent-table-container">
<DetailListView <DetailListView
repo={this.state.repo} repoInfo={this.state.repoInfo}
path={this.props.path} path={this.props.path}
repoID={this.props.repoID} repoID={this.props.repoID}
dirent={this.props.dirent} dirent={this.props.dirent}

View File

@ -31,7 +31,7 @@ const propTypes = {
onItemCopy: PropTypes.func.isRequired, onItemCopy: PropTypes.func.isRequired,
onItemDetails: PropTypes.func.isRequired, onItemDetails: PropTypes.func.isRequired,
updateDirent: PropTypes.func.isRequired, updateDirent: PropTypes.func.isRequired,
currentRepo: PropTypes.object, currentRepoInfo: PropTypes.object,
isRepoOwner: PropTypes.bool, isRepoOwner: PropTypes.bool,
}; };
@ -455,7 +455,7 @@ class DirentListItem extends React.Component {
dirent={this.props.dirent} dirent={this.props.dirent}
menuPosition={this.state.menuPosition} menuPosition={this.state.menuPosition}
onMenuItemClick={this.onMenuItemClick} onMenuItemClick={this.onMenuItemClick}
currentRepo={this.props.currentRepo} currentRepoInfo={this.props.currentRepoInfo}
isRepoOwner={this.props.isRepoOwner} isRepoOwner={this.props.isRepoOwner}
/> />
} }

View File

@ -8,7 +8,7 @@ const propTypes = {
path: PropTypes.string.isRequired, path: PropTypes.string.isRequired,
repoID: PropTypes.string.isRequired, repoID: PropTypes.string.isRequired,
isRepoOwner: PropTypes.bool, isRepoOwner: PropTypes.bool,
currentRepo: PropTypes.object, currentRepoInfo: PropTypes.object,
isAllItemSelected: PropTypes.bool.isRequired, isAllItemSelected: PropTypes.bool.isRequired,
isDirentListLoading: PropTypes.bool.isRequired, isDirentListLoading: PropTypes.bool.isRequired,
direntList: PropTypes.array.isRequired, direntList: PropTypes.array.isRequired,
@ -80,7 +80,7 @@ class DirentListView extends React.Component {
dirent={dirent} dirent={dirent}
path={this.props.path} path={this.props.path}
repoID={this.props.repoID} repoID={this.props.repoID}
currentRepo={this.props.currentRepo} currentRepoInfo={this.props.currentRepoInfo}
isRepoOwner={this.props.isRepoOwner} isRepoOwner={this.props.isRepoOwner}
onItemClick={this.props.onItemClick} onItemClick={this.props.onItemClick}
onItemRenameToggle={this.onItemRenameToggle} onItemRenameToggle={this.onItemRenameToggle}

View File

@ -7,7 +7,7 @@ const propTypes = {
dirent: PropTypes.object.isRequired, dirent: PropTypes.object.isRequired,
menuPosition: PropTypes.object.isRequired, menuPosition: PropTypes.object.isRequired,
onMenuItemClick: PropTypes.func.isRequired, onMenuItemClick: PropTypes.func.isRequired,
currentRepo: PropTypes.object.isRequired, currentRepoInfo: PropTypes.object.isRequired,
isRepoOwner: PropTypes.bool.isRequired, isRepoOwner: PropTypes.bool.isRequired,
}; };
@ -21,8 +21,8 @@ class DirentMenu extends React.Component {
} }
componentDidMount() { componentDidMount() {
let repo = this.props.currentRepo; let repoInfo = this.props.currentRepoInfo;
let menuList = this.calculateMenuList(repo); let menuList = this.calculateMenuList(repoInfo);
this.setState({ this.setState({
menuList: menuList, menuList: menuList,
menuHeight: menuList.length * 30, menuHeight: menuList.length * 30,

View File

@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import RepoListView from './repo-list-view'; import RepoListView from './repo-list-view';
import { seafileAPI } from '../../utils/seafile-api'; import { seafileAPI } from '../../utils/seafile-api';
import { gettext } from '../../utils/constants'; import { gettext } from '../../utils/constants';
import Repo from '../../models/repo'; import RepoInfo from '../../models/repo-info';
import '../../css/file-chooser.css'; import '../../css/file-chooser.css';
@ -22,7 +22,7 @@ class FileChooser extends React.Component {
isCurrentRepoShow: true, isCurrentRepoShow: true,
isOtherRepoShow: false, isOtherRepoShow: false,
repoList: [], repoList: [],
currentRepo: null, currentRepoInfo: null,
selectedRepo: null, selectedRepo: null,
selectedPath: '', selectedPath: '',
}; };
@ -31,22 +31,24 @@ class FileChooser extends React.Component {
componentDidMount() { componentDidMount() {
let repoID = this.props.repoID; let repoID = this.props.repoID;
seafileAPI.getRepoInfo(repoID).then(res => { seafileAPI.getRepoInfo(repoID).then(res => {
let repo = new Repo(res.data); // need to optimized
let repoInfo = new RepoInfo(res.data);
this.setState({ this.setState({
currentRepo: repo, currentRepoInfo: repoInfo,
}); });
}); });
} }
onOtherRepoToggle = () => { onOtherRepoToggle = () => {
if (!this.state.hasRequest) { if (!this.state.hasRequest) {
let { currentRepo } = this.state; let { currentRepoInfo } = this.state;
seafileAPI.listRepos().then(res => { seafileAPI.listRepos().then(res => {
// todo optimized code
let repos = res.data.repos; let repos = res.data.repos;
let repoList = []; let repoList = [];
let repoIdList = []; let repoIdList = [];
for(let i = 0; i < repos.length; i++) { for(let i = 0; i < repos.length; i++) {
if (repos[i].repo_name === currentRepo.repo_name || repos[i].permission !== 'rw') { if (repos[i].repo_name === currentRepoInfo.repo_name || repos[i].permission !== 'rw') {
continue; continue;
} }
if (repoIdList.indexOf(repos[i].repo_id) > -1) { if (repoIdList.indexOf(repos[i].repo_id) > -1) {
@ -94,10 +96,10 @@ class FileChooser extends React.Component {
<span className="library">{gettext('Current Library')}</span> <span className="library">{gettext('Current Library')}</span>
</div> </div>
{ {
this.state.isCurrentRepoShow && this.state.currentRepo && this.state.isCurrentRepoShow && this.state.currentRepoInfo &&
<RepoListView <RepoListView
initToShowChildren={true} initToShowChildren={true}
repo={this.state.currentRepo} currentRepoInfo={this.state.currentRepoInfo}
selectedRepo={this.state.selectedRepo} selectedRepo={this.state.selectedRepo}
selectedPath={this.state.selectedPath} selectedPath={this.state.selectedPath}
onRepoItemClick={this.onRepoItemClick} onRepoItemClick={this.onRepoItemClick}

View File

@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import RepoListItem from './repo-list-item'; import RepoListItem from './repo-list-item';
const propTypes = { const propTypes = {
repo: PropTypes.object, currentRepoInfo: PropTypes.object,
repoList: PropTypes.array, repoList: PropTypes.array,
selectedRepo: PropTypes.object, selectedRepo: PropTypes.object,
initToShowChildren: PropTypes.bool.isRequired, initToShowChildren: PropTypes.bool.isRequired,
@ -15,10 +15,10 @@ const propTypes = {
class RepoListView extends React.Component { class RepoListView extends React.Component {
render() { render() {
let { repo, repoList } = this.props; let { currentRepoInfo, repoList } = this.props;
if (repo) { if (currentRepoInfo) {
repoList = []; repoList = [];
repoList.push(repo); repoList.push(currentRepoInfo);
} }
return ( return (
<ul className="list-view-content file-chooser-item"> <ul className="list-view-content file-chooser-item">

View File

@ -6,19 +6,16 @@ class RepoInfo {
this.repo_name = object.repo_name; this.repo_name = object.repo_name;
this.permission = object.permission; this.permission = object.permission;
this.size = Utils.bytesToSize(object.size); this.size = Utils.bytesToSize(object.size);
this.file_count = object.file_count;
this.owner_name = object.owner_name; this.owner_name = object.owner_name;
this.owner_email = object.owner_email; this.owner_email = object.owner_email;
this.owner_contact_email = object.owner_contact_name; this.owner_contact_email = object.owner_contact_email;
this.is_admin = object.is_admin; this.is_admin = object.is_admin;
this.is_virtual = object.is_virtual;
this.no_quota = object.no_quota;
this.has_been_shared_out = object.has_been_shared_out;
this.encrypted = object.encrypted; this.encrypted = object.encrypted;
this.last_modified = object.last_modified;
this.modifier_contact_email = object.modifier_contact_email;
this.modifier_email = object.modifier_email;
this.modifier_name = object.modifier_name;
this.mtime = object.mtime;
} }
} }
export default RepoInfo; export default RepoInfo;
//todo rename to repo, and rename repo to repoInfo

View File

@ -6,15 +6,16 @@ class Repo {
this.repo_name = object.repo_name; this.repo_name = object.repo_name;
this.permission = object.permission; this.permission = object.permission;
this.size = Utils.bytesToSize(object.size); this.size = Utils.bytesToSize(object.size);
this.file_count = object.file_count;
this.owner_name = object.owner_name; this.owner_name = object.owner_name;
this.owner_email = object.owner_email; this.owner_email = object.owner_email;
this.owner_contact_email = object.owner_contact_email; this.owner_contact_email = object.owner_contact_email;
this.is_admin = object.is_admin; this.is_admin = object.is_admin;
this.is_virtual = object.is_virtual;
this.no_quota = object.no_quota;
this.has_been_shared_out = object.has_been_shared_out;
this.encrypted = object.encrypted; this.encrypted = object.encrypted;
this.last_modified = object.last_modified;
this.modifier_contact_email = object.modifier_contact_email;
this.modifier_email = object.modifier_email;
this.modifier_name = object.modifier_name;
this.mtime = object.mtime;
} }
} }

View File

@ -6,7 +6,7 @@ import { seafileAPI } from '../../utils/seafile-api';
import Loading from '../../components/loading'; import Loading from '../../components/loading';
import ModalPortal from '../../components/modal-portal'; import ModalPortal from '../../components/modal-portal';
import Group from '../../models/group'; import Group from '../../models/group';
import RepoInfo from '../../models/repoInfo'; import Repo from '../../models/repo';
import CommonToolbar from '../../components/toolbar/common-toolbar'; import CommonToolbar from '../../components/toolbar/common-toolbar';
import CreateRepoDialog from '../../components/dialog/create-repo-dialog'; import CreateRepoDialog from '../../components/dialog/create-repo-dialog';
import CreateDepartmentRepoDialog from '../../components/dialog/create-department-repo-dialog'; import CreateDepartmentRepoDialog from '../../components/dialog/create-department-repo-dialog';
@ -87,8 +87,8 @@ class GroupView extends React.Component {
this.setState({isLoading: true}); this.setState({isLoading: true});
seafileAPI.listGroupRepos(groupID).then((res) => { seafileAPI.listGroupRepos(groupID).then((res) => {
let repoList = res.data.map(item => { let repoList = res.data.map(item => {
let repoInfo = new RepoInfo(item); let repo = new Repo(item);
return repoInfo; return repo;
}); });
this.setState({ this.setState({
isLoading: false, isLoading: false,
@ -166,7 +166,7 @@ class GroupView extends React.Component {
size: res.data.size, size: res.data.size,
encrypted: res.data.encrypted, encrypted: res.data.encrypted,
}; };
let repo = new RepoInfo(object); let repo = new Repo(object);
let repoList = this.addRepoItem(repo); let repoList = this.addRepoItem(repo);
this.setState({repoList: repoList}); this.setState({repoList: repoList});
}).then(() => { }).then(() => {
@ -175,7 +175,7 @@ class GroupView extends React.Component {
} else { } else {
seafileAPI.createGroupRepo(groupId, repo).then(res => { seafileAPI.createGroupRepo(groupId, repo).then(res => {
let repo = new RepoInfo(res.data); let repo = new Repo(res.data);
let repoList = this.addRepoItem(repo); let repoList = this.addRepoItem(repo);
this.setState({repoList: repoList}); this.setState({repoList: repoList});
}).catch(() => { }).catch(() => {

View File

@ -4,7 +4,7 @@ import { gettext, siteRoot, loginUrl } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api'; import { seafileAPI } from '../../utils/seafile-api';
import Loading from '../../components/loading'; import Loading from '../../components/loading';
import Group from '../../models/group'; import Group from '../../models/group';
import RepoInfo from '../../models/repoInfo'; import Repo from '../../models/repo';
import GroupsToolbar from '../../components/toolbar/groups-toolbar'; import GroupsToolbar from '../../components/toolbar/groups-toolbar';
import SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view'; import SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view';
import CreateGroupDialog from '../../components/dialog/create-group-dialog'; import CreateGroupDialog from '../../components/dialog/create-group-dialog';
@ -28,7 +28,7 @@ class RepoListViewPanel extends React.Component {
componentDidMount() { componentDidMount() {
let group = this.props.group; let group = this.props.group;
let repoList = group.repos.map(item => { let repoList = group.repos.map(item => {
let repo = new RepoInfo(item); let repo = new Repo(item);
return repo; return repo;
}); });
this.setState({repoList: repoList}); this.setState({repoList: repoList});

View File

@ -4,7 +4,7 @@ import cookie from 'react-cookies';
import { gettext, repoID, siteRoot, permission } from '../../utils/constants'; import { gettext, repoID, siteRoot, permission } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api'; import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils'; import { Utils } from '../../utils/utils';
import Repo from '../../models/repo'; import RepoInfo from '../../models/repo-info';
import CommonToolbar from '../../components/toolbar/common-toolbar'; import CommonToolbar from '../../components/toolbar/common-toolbar';
import ViewModeToolbar from '../../components/toolbar/view-mode-toolbar'; import ViewModeToolbar from '../../components/toolbar/view-mode-toolbar';
import DirOperationToolBar from '../../components/toolbar/dir-operation-toolbar'; import DirOperationToolBar from '../../components/toolbar/dir-operation-toolbar';
@ -66,7 +66,7 @@ class MainPanel extends Component {
isDirentDetailShow: false, isDirentDetailShow: false,
currentDirent: null, currentDirent: null,
direntPath: '', direntPath: '',
currentRepo: null, currentRepoInfo: null,
isRepoOwner: false, isRepoOwner: false,
activeTitleIndex: -1, activeTitleIndex: -1,
}; };
@ -76,12 +76,12 @@ class MainPanel extends Component {
componentDidMount() { componentDidMount() {
seafileAPI.getRepoInfo(repoID).then(res => { seafileAPI.getRepoInfo(repoID).then(res => {
let repo = new Repo(res.data); let repoInfo = new RepoInfo(res.data);
seafileAPI.getAccountInfo().then(res => { seafileAPI.getAccountInfo().then(res => {
let user_email = res.data.email; let user_email = res.data.email;
let isRepoOwner = repo.owner_email === user_email; let isRepoOwner = repoInfo.owner_email === user_email;
this.setState({ this.setState({
currentRepo: repo, currentRepoInfo: repoInfo,
isRepoOwner: isRepoOwner, isRepoOwner: isRepoOwner,
}); });
}); });
@ -210,10 +210,10 @@ class MainPanel extends Component {
<div className="main-panel-center flex-row"> <div className="main-panel-center flex-row">
<div className="cur-view-container"> <div className="cur-view-container">
<div className="cur-view-path"> <div className="cur-view-path">
{this.state.currentRepo && ( {this.state.currentRepoInfo && (
<CurDirPath <CurDirPath
repoID={repoID} repoID={repoID}
repoName={this.state.currentRepo.repo_name} repoName={this.state.currentRepoInfo.repo_name}
currentPath={this.props.path} currentPath={this.props.path}
permission={permission} permission={permission}
onPathClick={this.onMainNavBarClick} onPathClick={this.onMainNavBarClick}
@ -254,7 +254,7 @@ class MainPanel extends Component {
onItemDetails={this.onItemDetails} onItemDetails={this.onItemDetails}
isDirentListLoading={this.props.isDirentListLoading} isDirentListLoading={this.props.isDirentListLoading}
updateDirent={this.props.updateDirent} updateDirent={this.props.updateDirent}
currentRepo={this.state.currentRepo} currentRepoInfo={this.state.currentRepoInfo}
isRepoOwner={this.state.isRepoOwner} isRepoOwner={this.state.isRepoOwner}
isAllItemSelected={this.props.isAllDirentSelected} isAllItemSelected={this.props.isAllDirentSelected}
onAllItemSelected={this.props.onAllDirentSelected} onAllItemSelected={this.props.onAllDirentSelected}