diff --git a/frontend/src/components/dialog/share-dialog.js b/frontend/src/components/dialog/share-dialog.js index 72eb726b18..96532c818e 100644 --- a/frontend/src/components/dialog/share-dialog.js +++ b/frontend/src/components/dialog/share-dialog.js @@ -1,12 +1,13 @@ 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 { gettext, username, canGenerateShareLink, canGenerateUploadLink } from '../../utils/constants'; import ShareToUser from './share-to-user'; import ShareToGroup from './share-to-group'; import GenerateShareLink from './generate-share-link'; import GenerateUploadLink from './generate-upload-link'; import '../../css/share-link-dialog.css'; +import { seafileAPI } from '../../utils/seafile-api'; const propTypes = { isGroupOwnedRepo: PropTypes.bool, @@ -24,10 +25,23 @@ class ShareDialog extends React.Component { constructor(props) { super(props); this.state = { - activeTab: this.getInitialActiveTab() + activeTab: this.getInitialActiveTab(), + isRepoJudgeMent: false, + isRepoOwner: false, }; } + componentDidMount() { + let repoID = this.props.repoID; + seafileAPI.getRepoInfo(repoID).then(res => { + let isRepoOwner = res.data.owner_email === username; + this.setState({ + isRepoJudgeMent: true, + isRepoOwner: isRepoOwner, + }); + }); + } + getInitialActiveTab = () => { const {repoEncrypted, userPerm, enableDirPrivateShare} = this.props; const enableShareLink = !repoEncrypted && canGenerateShareLink; @@ -112,10 +126,10 @@ class ShareDialog extends React.Component { {enableDirPrivateShare && - + - + } @@ -154,6 +168,10 @@ class ShareDialog extends React.Component { } render() { + + if (!this.state.isRepoJudgeMent) { + return ''; + } const { itemType, itemName, repoEncrypted } = this.props; const enableShareLink = !repoEncrypted && canGenerateShareLink; return ( diff --git a/frontend/src/components/dialog/share-to-group.js b/frontend/src/components/dialog/share-to-group.js index eb5e75ae71..1621d0ac7e 100644 --- a/frontend/src/components/dialog/share-to-group.js +++ b/frontend/src/components/dialog/share-to-group.js @@ -88,7 +88,8 @@ const propTypes = { isGroupOwnedRepo: PropTypes.bool, itemPath: PropTypes.string.isRequired, itemType: PropTypes.string.isRequired, - repoID: PropTypes.string.isRequired + repoID: PropTypes.string.isRequired, + isRepoOwner: PropTypes.bool.isRequired, }; const NoOptionsMessage = (props) => { @@ -109,9 +110,10 @@ class ShareToGroup extends React.Component { }; this.options = []; this.permissions = [] - if (this.props.itemType === 'library') { - this.permissions = ['rw', 'r', 'admin', 'cloud-edit', 'preview']; - } else if (this.props.itemType === 'dir') { + let { itemType, isRepoOwner } = props; + if (itemType === 'library') { + this.permissions = isRepoOwner ? ['rw', 'r', 'admin', 'cloud-edit', 'preview'] : ['rw', 'r', 'cloud-edit', 'preview']; + } else if (itemType === 'dir') { this.permissions = ['rw', 'r', 'cloud-edit', 'preview']; } if (this.props.isGroupOwnedRepo || !isPro) { diff --git a/frontend/src/components/dialog/share-to-user.js b/frontend/src/components/dialog/share-to-user.js index e47c81aece..815e94012e 100644 --- a/frontend/src/components/dialog/share-to-user.js +++ b/frontend/src/components/dialog/share-to-user.js @@ -88,7 +88,8 @@ const propTypes = { isGroupOwnedRepo: PropTypes.bool, itemPath: PropTypes.string.isRequired, itemType: PropTypes.string.isRequired, - repoID: PropTypes.string.isRequired + repoID: PropTypes.string.isRequired, + isRepoOwner: PropTypes.bool.isRequired, }; class ShareToUser extends React.Component { @@ -103,8 +104,9 @@ class ShareToUser extends React.Component { }; this.options = []; this.permissions = []; - if (this.props.itemType === 'library') { - this.permissions = ['rw', 'r', 'admin', 'cloud-edit', 'preview']; + let { itemType, isRepoOwner } = props; + if (itemType === 'library') { + this.permissions = isRepoOwner ? ['rw', 'r', 'admin', 'cloud-edit', 'preview'] : ['rw', 'r', 'cloud-edit', 'preview']; } else if (this.props.itemType === 'dir') { this.permissions = ['rw', 'r', 'cloud-edit', 'preview']; }