import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Link } from '@gatsbyjs/reach-router';
import { Utils } from '../../../utils/utils';
import { seafileAPI } from '../../../utils/seafile-api';
import { gettext, siteRoot } from '../../../utils/constants';
import Loading from '../../../components/loading';
import toaster from '../../../components/toast';
import EmptyTip from '../../../components/empty-tip';
const itemPropTypes = {
item: PropTypes.object.isRequired,
deleteItem: PropTypes.func.isRequired
};
class Item extends Component {
constructor(props) {
super(props);
this.state = {
isOperationShow: false
};
}
onMouseEnter = () => {
this.setState({ isOperationShow: true });
};
onMouseLeave = () => {
this.setState({ isOperationShow: false });
};
onDeleteLink = (e) => {
e.preventDefault();
this.props.deleteItem(this.props.item);
};
render() {
let item = this.props.item;
let path = item.path === '/' ? '/' : item.path.slice(0, item.path.length - 1);
let objUrl = `${siteRoot}library/${item.repo_id}/${encodeURIComponent(item.repo_name)}${Utils.encodePath(path)}`;
return (
{item.creator_name} |
{item.obj_name}
|
{item.link}
|
|
);
}
}
Item.propTypes = itemPropTypes;
const propTypes = {
repo: PropTypes.object.isRequired,
};
class RepoShareAdminUploadLinks extends Component {
constructor(props) {
super(props);
this.state = {
loading: true,
errorMsg: '',
items: [],
};
}
componentDidMount() {
seafileAPI.listRepoUploadLinks(this.props.repo.repo_id).then((res) => {
this.setState({
loading: false,
items: res.data,
});
}).catch((error) => {
this.setState({
loading: false,
errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403
});
});
}
deleteItem = (item) => {
seafileAPI.deleteRepoUploadLink(this.props.repo.repo_id, item.token).then(() => {
let items = this.state.items.filter(linkItem => {
return linkItem.token !== item.token;
});
this.setState({ items: items });
let message = gettext('Successfully deleted 1 item');
toaster.success(message);
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
};
render() {
const { loading, errorMsg, items } = this.state;
return (
{loading && }
{!loading && errorMsg && {errorMsg}
}
{!loading && !errorMsg && !items.length &&
}
{!loading && !errorMsg && items.length > 0 &&
{gettext('Creator')} |
{gettext('Name')} |
{gettext('Link')} |
|
{items.map((item, index) => {
return (
);
})}
}
);
}
}
RepoShareAdminUploadLinks.propTypes = propTypes;
export default RepoShareAdminUploadLinks;