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 (