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, 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.email] = true); this.setState({ departmentMap }); }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); } classifyWikis = (wikis) => { let v1Wikis = []; let myWikis = []; 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 (!department2WikisMap[wikis[i].owner]) { department2WikisMap[wikis[i].owner] = []; } department2WikisMap[wikis[i].owner].push(wikis[i]); } } return { department2WikisMap, myWikis, v1Wikis }; }; render() { let { loading, errorMsg, wikis } = this.props.data; const { toggelAddWikiDialog, sidePanelRate, isSidePanelFolded } = this.props; if (loading) { return ; } if (errorMsg) { return

{errorMsg}

; } const { v1Wikis, myWikis, department2WikisMap } = this.classifyWikis(wikis); let wikiCardGroups = []; wikiCardGroups.push( ); for (let deptEmail in department2WikisMap) { wikiCardGroups.push( ); } wikiCardGroups.push( ); return wikiCardGroups; } } WikiCardView.propTypes = propTypes; export default WikiCardView;