import React from 'react'; import PropTypes from 'prop-types'; import { gettext, repoID } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import Repo from '../../models/repo'; const propTypes = { dirent: PropTypes.object.isRequired, menuPosition: PropTypes.object.isRequired, }; class OperationMenu extends React.Component { constructor(props) { super(props); this.state = { repo: null, is_repo_owner: false, }; } componentDidMount() { seafileAPI.getRepoInfo(repoID).then(res => { let repo = new Repo(res.data); seafileAPI.getAccountInfo().then(res => { let user_email = res.data.email; let is_repo_owner = repo.owner_email === user_email; this.setState({ repo: repo, is_repo_owner: is_repo_owner }); }); }); } getItemType() { let type = this.props.dirent.is_dir ? 'dir' : 'file'; return type; } renderDirentDirMenu() { let position = this.props.menuPosition; let style = {position: 'fixed', left: position.left, top: position.top, display: 'block'}; if (this.props.dirent.permission === 'rw') { return ( ); } if (this.props.dirent.permission === 'r') { return ( ); } } renderDirentFileMenu() { let position = this.props.menuPosition; let style = {position: 'fixed', left: position.left, top: position.top, display: 'block'}; if (this.props.dirent.permission === 'rw') { return ( ); } if (this.props.dirent.permission === 'r') { return ( ); } } render() { let type = this.getItemType(); let menu = null; switch(type) { case 'file': menu = this.renderDirentFileMenu(); break; case 'dir': menu = this.renderDirentDirMenu(); break; default: break; } return menu; } } OperationMenu.propTypes = propTypes; export default OperationMenu;