import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { gettext } from '../../utils/constants';
import { Input } from 'reactstrap';
import { Button } from 'reactstrap';
import { seafileAPI } from '../../utils/seafile-api.js';
import { Utils } from '../../utils/utils';
import toaster from '../toast';
import SharePermissionEditor from '../select-editor/share-permission-editor';
class ShareItem extends React.Component {
constructor(props) {
super(props);
this.state = {
isOperationShow: false
};
}
onMouseEnter = () => {
this.setState({isOperationShow: true});
}
onMouseLeave = () => {
this.setState({isOperationShow: false});
}
deleteShareItem = () => {
let item = this.props.item;
this.props.deleteShareItem(item);
}
render() {
let item = this.props.item;
return (
{item.to_sever_url} |
{item.to_user} |
{Utils.sharePerms(item.permission)} |
{/*
| */}
|
);
}
}
class ShareList extends React.Component {
render() {
return (
{gettext('Server URL')} |
{gettext('User Email')} |
{gettext('Permission')} |
|
{this.props.items.map((item, index) => {
return (
);
})}
);
}
}
const propTypes = {
isGroupOwnedRepo: PropTypes.bool,
itemPath: PropTypes.string.isRequired,
itemType: PropTypes.string.isRequired,
repoID: PropTypes.string.isRequired,
isRepoOwner: PropTypes.bool.isRequired,
};
class ShareToOtherServer extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedOption: null,
errorMsg: [],
permission: 'rw',
ocmShares: [],
toUser: '',
toServerURL: '',
};
this.options = [];
this.permissions = ['rw', 'r'];
this.UnshareMessage = 'File was unshared';
}
handleSelectChange = (option) => {
this.setState({selectedOption: option});
this.options = [];
}
componentDidMount() {
seafileAPI.listOCMSharesPrepare(this.props.repoID).then((res) => {
this.setState({ocmShares: res.data.ocm_share_list});
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
}
startOCMShare = () => {
let { repoID, itemPath } = this.props;
let { toServerURL, toUser, permission } = this.state;
if (!toServerURL.endsWith('/')) {
toServerURL += '/';
}
seafileAPI.addOCMSharePrepare(toUser, toServerURL, repoID, itemPath, permission).then((res) => {
toaster.success(gettext('share success.'));
let ocmShares = this.state.ocmShares;
ocmShares.push(res.data);
this.setState({ocmShares: ocmShares});
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
}
handleToUserChange = (e) => {
this.setState({
toUser: e.target.value,
});
}
handleURLChange = (e) => {
this.setState({
toServerURL: e.target.value,
});
}
deleteShareItem = (deletedItem) => {
let { id } = deletedItem;
seafileAPI.deleteOCMSharePrepare(id).then((res) => {
toaster.success(gettext('delete success.'));
let ocmShares = this.state.ocmShares.filter(item => {
return item.id != id;
});
this.setState({ocmShares: ocmShares});
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
}
setPermission = (permission) => {
this.setState({permission: permission});
}
render() {
let { ocmShares, toUser, toServerURL, permission } = this.state;
return (
);
}
}
ShareToOtherServer.propTypes = propTypes;
export default ShareToOtherServer;