1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-01 23:20:51 +00:00

remove repo share when delete custom share perm (#5241)

Co-authored-by: lian <lian@seafile.com>
This commit is contained in:
lian
2022-08-17 11:20:19 +08:00
committed by GitHub
parent 5e356c1b65
commit 1252e7b6ef
2 changed files with 56 additions and 26 deletions

View File

@@ -2,6 +2,7 @@ import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import cookie from 'react-cookies';
import moment from 'moment';
import { navigate } from '@reach/router';
import { gettext, siteRoot, username, isDocs, enableVideoThumbnail } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';
@@ -135,6 +136,10 @@ class LibContentView extends React.Component {
const repoInfo = new RepoInfo(repoRes.data);
const isGroupOwnedRepo = repoInfo.owner_email.indexOf('@seafile_group') > -1;
this.setState({
currentRepoInfo: repoInfo,
});
if (repoInfo.permission.startsWith('custom-')) {
const permissionID = repoInfo.permission.split('-')[1];
const permissionRes = await seafileAPI.getCustomPermission(repoID, permissionID);
@@ -143,14 +148,13 @@ class LibContentView extends React.Component {
this.isNeedUpdateHistoryState = false;
this.setState({
currentRepoInfo: repoInfo,
repoName: repoInfo.repo_name,
libNeedDecrypt: repoInfo.lib_need_decrypt,
repoEncrypted: repoInfo.encrypted,
isGroupOwnedRepo: isGroupOwnedRepo,
path: path
});
if (!repoInfo.lib_need_decrypt) {
this.loadDirData(path);
}
@@ -164,6 +168,11 @@ class LibContentView extends React.Component {
let errorMsg = gettext('Permission denied');
toaster.danger(errorMsg);
} else if (error.response.status == 404) {
this.setState({
isDirentListLoading: false,
errorMsg: gettext('Library share permission not found.')
});
} else {
this.setState({
isDirentListLoading: false,
@@ -1747,6 +1756,22 @@ class LibContentView extends React.Component {
this.updateUsedRepoTags();
}
handleSubmit = (e) => {
let options = {
'share_type': 'personal',
'from': this.state.currentRepoInfo.owner_email
};
seafileAPI.leaveShareRepo(this.props.repoID, options).then(res => {
navigate(siteRoot + 'shared-libs/');
}).catch((error) => {
let errorMsg = Utils.getErrorMsg(error, true);
toaster.danger(errorMsg);
});
e.preventDefault();
}
render() {
if (this.state.libNeedDecrypt) {
return (
@@ -1759,6 +1784,15 @@ class LibContentView extends React.Component {
);
}
if (this.state.errorMsg) {
return (
<Fragment>
<p className="error mt-6 text-center">{this.state.errorMsg}</p>
<button type="submit" className="btn btn-primary submit" onClick={this.handleSubmit}>{gettext('Leave Share')}</button>
</Fragment>
)
}
if (!this.state.currentRepoInfo) {
return '';
}