import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { gettext, siteRoot, canAddGroup } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import { Utils } from '../../utils/utils'; import Loading from '../../components/loading'; import Group from '../../models/group'; import Repo from '../../models/repo'; import toaster from '../../components/toast'; import GroupsToolbar from '../../components/toolbar/groups-toolbar'; import SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view'; import CreateGroupDialog from '../../components/dialog/create-group-dialog'; import LibDetail from '../../components/dirent-detail/lib-details'; import EmptyTip from '../../components/empty-tip'; import '../../css/groups.css'; const propTypes = { group: PropTypes.object.isRequired, onItemDetails: PropTypes.func.isRequired, }; class RepoListViewPanel extends React.Component { constructor(props) { super(props); this.state = { repoList: [], }; } componentDidMount() { let group = this.props.group; let repoList = group.repos.map(item => { let repo = new Repo(item); return repo; }); this.setState({repoList: repoList}); } onItemUnshare = (repo) => { let group = this.props.group; seafileAPI.unshareRepoToGroup(repo.repo_id, group.id).then(() => { let repoList = this.state.repoList.filter(item => { return item.repo_id !== repo.repo_id; }); this.setState({repoList: repoList}); }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); }; onItemDelete = (repo) => { let repoList = this.state.repoList.filter(item => { return item.repo_id !== repo.repo_id; }); this.setState({repoList: repoList}); }; onItemRename = (repo, newName) => { let group = this.props.group; seafileAPI.renameGroupOwnedLibrary(group.id, repo.repo_id, newName).then(res => { let repoList = this.state.repoList.map(item => { if (item.repo_id === repo.repo_id) { item.repo_name = newName; } return item; }); this.setState({repoList: repoList}); }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); }; onMonitorRepo = (repo, monitored) => { let repoList = this.state.repoList.map(item => { if (item.repo_id === repo.repo_id) { item.monitored = monitored; } return item; }); this.setState({repoList: repoList}); }; render() { let group = this.props.group; const emptyTip =
{gettext('No libraries')}
; return ({gettext('You are not in any groups. Groups allow multiple people to collaborate on libraries. You can create a group by clicking the "New Group" button in the menu bar.')}
:{gettext('You are not in any groups. Groups allow multiple people to collaborate on libraries. Groups you join will be listed here.')}
}