import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { Modal, ModalHeader, ModalBody, TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap'; import { gettext, canGenerateShareLink, canGenerateUploadLink } from '../../utils/constants'; import RepoShareAdminShareLinks from './repo-share-admin/share-links'; import RepoShareAdminUploadLinks from './repo-share-admin/upload-links'; import RepoShareAdminUserShares from './repo-share-admin/user-shares'; import RepoShareAdminGroupShares from './repo-share-admin/group-shares'; const propTypes = { repo: PropTypes.object.isRequired, toggleDialog: PropTypes.func.isRequired, }; class RepoShareAdminDialog extends React.Component { constructor(props) { super(props); this.enableShareLink = !this.props.repo.encrypted && canGenerateShareLink; this.enableUploadLink = !this.props.repo.encrypted && canGenerateUploadLink; this.state = { activeTab: this.getInitialActiveTab() }; } getInitialActiveTab = () => { if (this.enableShareLink) { return 'shareLink'; } else if (this.enableUploadLink) { return 'uploadLink'; } else { return 'shareToUser'; } }; toggle = (tab) => { if (this.state.activeTab !== tab) { this.setState({ activeTab: tab }); } }; onTabKeyDown = (e) => { if (e.key == 'Enter' || e.key == 'Space') { e.target.click(); } }; render() { const { activeTab } = this.state; const { repo_name: repoName } = this.props.repo; return (
{repoName} {gettext('Share Admin')}
{(this.enableShareLink && activeTab === 'shareLink') && } {(this.enableUploadLink && activeTab === 'uploadLink') && } {activeTab === 'shareToUser' && } {activeTab === 'shareToGroup' && }
); } } RepoShareAdminDialog.propTypes = propTypes; export default RepoShareAdminDialog;