import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { gettext, username, canPublishRepo, isPro } from '../../utils/constants'; import WikiCardGroup from './wiki-card-group'; import wikiAPI from '../../utils/wiki-api'; import { Utils } from '../../utils/utils'; import toaster from '../toast'; import './wiki-card-view.css'; const propTypes = { data: PropTypes.object.isRequired, deleteWiki: PropTypes.func.isRequired, renameWiki: PropTypes.func.isRequired, leaveSharedWiki: PropTypes.func.isRequired, unshareGroupWiki: PropTypes.func.isRequired, toggelAddWikiDialog: PropTypes.func, sidePanelRate: PropTypes.number, isSidePanelFolded: PropTypes.bool, }; class WikiCardView extends Component { constructor(props) { super(props); this.state = { departmentMap: {}, }; } componentDidMount() { if (!canPublishRepo || !isPro) return; let departmentMap = {}; wikiAPI.listWikiDepartments().then(res => { res.data.forEach(item => departmentMap[item.id] = true); this.setState({ departmentMap }); }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); } classifyWikis = (wikis) => { let v1Wikis = []; let myWikis = []; let sharedWikis = []; let department2WikisMap = {}; for (let i = 0; i < wikis.length; i++) { if (wikis[i].version === 'v1') { v1Wikis.push(wikis[i]); } else if (wikis[i].owner === username) { myWikis.push(wikis[i]); } else if (wikis[i].type === 'shared') { sharedWikis.push(wikis[i]); } else { if (!department2WikisMap[wikis[i].owner]) { department2WikisMap[wikis[i].owner] = []; } department2WikisMap[wikis[i].owner].push(wikis[i]); } } return { department2WikisMap, myWikis, v1Wikis, sharedWikis }; }; render() { let { loading, errorMsg, wikis, groupWikis } = this.props.data; const { toggelAddWikiDialog, sidePanelRate, isSidePanelFolded } = this.props; if (loading) { return ; } if (errorMsg) { return
{errorMsg}
; } const { v1Wikis, myWikis, sharedWikis } = this.classifyWikis(wikis); let wikiCardGroups = []; wikiCardGroups.push(