mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-15 14:49:09 +00:00
share wiki (#6413)
* share wiki update leave and return update get group info * format optimize * Update wikis.js * Update wiki2.py * fix empty group_wikis * update * remove-useless-code * add-owner-nickname * Update wiki2.py * Update wiki2.py * Update wiki2.py --------- Co-authored-by: 孙永强 <11704063+s-yongqiang@user.noreply.gitee.com> Co-authored-by: r350178982 <32759763+r350178982@users.noreply.github.com>
This commit is contained in:
@@ -9,6 +9,8 @@ import EmptyTip from '../../components/empty-tip';
|
||||
import AddWikiDialog from '../../components/dialog/add-wiki-dialog';
|
||||
import wikiAPI from '../../utils/wiki-api';
|
||||
import WikiCardView from '../../components/wiki-card-view/wiki-card-view';
|
||||
import { seafileAPI } from '../../utils/seafile-api';
|
||||
|
||||
|
||||
const propTypes = {
|
||||
sidePanelRate: PropTypes.number,
|
||||
@@ -23,6 +25,7 @@ class Wikis extends Component {
|
||||
errorMsg: '',
|
||||
currentDeptEmail: '',
|
||||
wikis: [],
|
||||
groupWikis: [],
|
||||
isShowAddWikiMenu: false,
|
||||
isShowAddDialog: false,
|
||||
isDropdownMenuShown: false,
|
||||
@@ -35,6 +38,7 @@ class Wikis extends Component {
|
||||
|
||||
getWikis = () => {
|
||||
let wikis = [];
|
||||
let groupWikis = [];
|
||||
wikiAPI.listWikis().then(res => {
|
||||
wikis = wikis.concat(res.data.data);
|
||||
wikis.map(wiki => {
|
||||
@@ -42,12 +46,20 @@ class Wikis extends Component {
|
||||
});
|
||||
wikiAPI.listWikis2().then(res => {
|
||||
let wikis2 = res.data.wikis;
|
||||
groupWikis = res.data.group_wikis;
|
||||
groupWikis.forEach(group => {
|
||||
group.wiki_info.forEach(wiki => {
|
||||
wiki.version = 'v2';
|
||||
wiki.admins = group.group_admins;
|
||||
});
|
||||
});
|
||||
wikis2.map(wiki => {
|
||||
return wiki['version'] = 'v2';
|
||||
});
|
||||
this.setState({
|
||||
loading: false,
|
||||
wikis: wikis.concat(wikis2)
|
||||
wikis: wikis.concat(wikis2),
|
||||
groupWikis: groupWikis
|
||||
});
|
||||
}).catch((error) => {
|
||||
this.setState({
|
||||
@@ -89,12 +101,24 @@ class Wikis extends Component {
|
||||
addWiki = (wikiName, currentDeptID) => {
|
||||
wikiAPI.addWiki2(wikiName, currentDeptID).then((res) => {
|
||||
let wikis = this.state.wikis.slice(0);
|
||||
let groupWikis = this.state.groupWikis;
|
||||
let new_wiki = res.data;
|
||||
new_wiki['version'] = 'v2';
|
||||
wikis.push(new_wiki);
|
||||
if (currentDeptID) {
|
||||
groupWikis.filter(group => {
|
||||
if (group.group_id === currentDeptID) {
|
||||
group.wiki_info.push(new_wiki);
|
||||
}
|
||||
return group;
|
||||
});
|
||||
} else {
|
||||
wikis.push(new_wiki);
|
||||
}
|
||||
this.setState({
|
||||
wikis,
|
||||
currentDeptEmail: '',
|
||||
groupWikis,
|
||||
currentDeptID: '',
|
||||
});
|
||||
}).catch((error) => {
|
||||
if (error.response) {
|
||||
@@ -110,7 +134,14 @@ class Wikis extends Component {
|
||||
let wikis = this.state.wikis.filter(item => {
|
||||
return item.id !== wiki.id;
|
||||
});
|
||||
this.setState({ wikis: wikis });
|
||||
let groupWikis = this.state.groupWikis.filter(group => {
|
||||
group.wiki_info = group.wiki_info.filter(item => item.name !== wiki.name);
|
||||
return group;
|
||||
});
|
||||
this.setState({
|
||||
wikis: wikis,
|
||||
groupWikis: groupWikis,
|
||||
});
|
||||
}).catch((error) => {
|
||||
if (error.response) {
|
||||
let errorMsg = error.response.data.error_msg;
|
||||
@@ -122,7 +153,14 @@ class Wikis extends Component {
|
||||
let wikis = this.state.wikis.filter(item => {
|
||||
return item.id !== wiki.id;
|
||||
});
|
||||
this.setState({ wikis: wikis });
|
||||
let groupWikis = this.state.groupWikis.filter(group => {
|
||||
group.wiki_info = group.wiki_info.filter(item => item.name !== wiki.name);
|
||||
return group;
|
||||
});
|
||||
this.setState({
|
||||
wikis: wikis,
|
||||
groupWikis: groupWikis,
|
||||
});
|
||||
}).catch((error) => {
|
||||
if (error.response) {
|
||||
let errorMsg = error.response.data.error_msg;
|
||||
@@ -132,6 +170,57 @@ class Wikis extends Component {
|
||||
}
|
||||
};
|
||||
|
||||
leaveSharedWiki = (wiki) => {
|
||||
if (!wiki.owner.includes('@seafile_group')) {
|
||||
let options = {
|
||||
'share_type': 'personal',
|
||||
'from': wiki.owner
|
||||
};
|
||||
seafileAPI.leaveShareRepo(wiki.repo_id, options).then(res => {
|
||||
let wikis = this.state.wikis.filter(item => {
|
||||
return item.name !== wiki.name;
|
||||
});
|
||||
this.setState({
|
||||
wikis: wikis,
|
||||
});
|
||||
}).catch((error) => {
|
||||
let errorMsg = Utils.getErrorMsg(error, true);
|
||||
toaster.danger(errorMsg);
|
||||
});
|
||||
} else {
|
||||
seafileAPI.leaveShareGroupOwnedRepo(wiki.repo_id).then(res => {
|
||||
let wikis = this.state.wikis.filter(item => {
|
||||
return item.name !== wiki.name;
|
||||
});
|
||||
this.setState({
|
||||
wikis: wikis,
|
||||
});
|
||||
}).catch((error) => {
|
||||
let errorMsg = Utils.getErrorMsg(error, true);
|
||||
toaster.danger(errorMsg);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
unshareGroupWiki = (wiki, groupId) => {
|
||||
seafileAPI.unshareRepoToGroup(wiki.repo_id, groupId).then(() => {
|
||||
let groupWikis = this.state.groupWikis.map(group => {
|
||||
if (group.group_id === groupId) {
|
||||
return {
|
||||
...group,
|
||||
wiki_info: group.wiki_info.filter(item => item.name !== wiki.name)
|
||||
};
|
||||
}
|
||||
return group;
|
||||
});
|
||||
this.setState({ groupWikis: groupWikis });
|
||||
}).catch(error => {
|
||||
let errMessage = Utils.getErrorMsg(error);
|
||||
toaster.danger(errMessage);
|
||||
});
|
||||
};
|
||||
|
||||
renameWiki = (wiki, newName) => {
|
||||
if (wiki.version === 'v1') {
|
||||
wikiAPI.renameWiki(wiki.id, newName).then(() => {
|
||||
@@ -150,13 +239,7 @@ class Wikis extends Component {
|
||||
});
|
||||
} else {
|
||||
wikiAPI.renameWiki2(wiki.id, newName).then(() => {
|
||||
let wikis = this.state.wikis.map(item => {
|
||||
if (item.id === wiki.id && item.version === 'v2') {
|
||||
item.name = newName;
|
||||
}
|
||||
return item;
|
||||
});
|
||||
this.setState({ wikis: wikis });
|
||||
this.getWikis();
|
||||
}).catch((error) => {
|
||||
if (error.response) {
|
||||
let errorMsg = error.response.data.error_msg;
|
||||
@@ -208,11 +291,13 @@ class Wikis extends Component {
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
{(this.state.loading || this.state.wikis.length !== 0) &&
|
||||
{(this.state.loading || this.state.wikis.length !== 0 || this.state.groupWikis.length !== 0) &&
|
||||
<div className="cur-view-content pb-4">
|
||||
<WikiCardView
|
||||
data={this.state}
|
||||
deleteWiki={this.deleteWiki}
|
||||
leaveSharedWiki={this.leaveSharedWiki}
|
||||
unshareGroupWiki={this.unshareGroupWiki}
|
||||
renameWiki={this.renameWiki}
|
||||
toggelAddWikiDialog={this.toggelAddWikiDialog}
|
||||
sidePanelRate={this.props.sidePanelRate}
|
||||
@@ -220,7 +305,7 @@ class Wikis extends Component {
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
{(!this.state.loading && this.state.wikis.length === 0) &&
|
||||
{(!this.state.loading && this.state.wikis.length === 0 && this.state.groupWikis.length === 0) &&
|
||||
<div className="cur-view-content">
|
||||
<EmptyTip>
|
||||
<h2>{gettext('No Wikis')}</h2>
|
||||
|
Reference in New Issue
Block a user