import React, { Component, Fragment } from 'react';
import { Link } from '@reach/router';
import moment from 'moment';
import { gettext, siteRoot, lang } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api';
import toaster from '../../components/toast';
import CommonToolbar from '../../components/toolbar/common-toolbar';
import Loading from '../../components/loading';
moment.locale(lang);
class MyLibsDeleted extends Component {
constructor(props) {
super(props);
this.state = {
deletedRepoList: [],
isLoading: true,
};
}
componentDidMount() {
seafileAPI.listDeletedRepo().then(res => {
this.setState({
deletedRepoList: res.data,
isLoading: false,
});
});
}
refreshDeletedRepoList = (repoID) => {
let deletedRepoList = this.state.deletedRepoList.filter(item => {
return item.repo_id !== repoID;
});
this.setState({deletedRepoList: deletedRepoList});
}
render() {
return (
{gettext("My Libraries")}
/
{gettext('Deleted Libraries')}
{this.state.isLoading &&
}
{(!this.state.isLoading && this.state.deletedRepoList.length === 0) &&
{gettext('No deleted libraries.')}
}
{this.state.deletedRepoList.length !== 0 &&
{gettext('Tip: libraries deleted 30 days ago will be cleaned automatically.')}
}
);
}
}
class DeletedRepoTable extends Component {
render() {
let deletedRepos = this.props.deletedRepoList;
return (
{/*img*/} |
{gettext('Name')} |
{gettext('Deleted Time')} |
|
{ deletedRepos && deletedRepos.map((item) => {
return (
);
})}
);
}
}
class DeletedRepoItem extends Component {
constructor(props) {
super(props);
this.state = {
hideRestoreMenu: true,
highlight: false,
};
}
onMouseEnter = () => {
if (!this.props.isItemFreezed) {
this.setState({
hideRestoreMenu: false,
highlight: true,
});
}
}
onMouseLeave = () => {
if (!this.props.isItemFreezed) {
this.setState({
hideRestoreMenu: true,
highlight: false,
});
}
}
restoreDeletedRepo = () => {
let repoID = this.props.repo.repo_id;
let repoName = this.props.repo.repo_name;
seafileAPI.restoreDeletedRepo(repoID).then(res => {
let message = gettext('Successfully restored the library.') + ' ' + repoName;
toaster.success(message);
this.props.refreshDeletedRepoList(repoID);
}).catch(res => {
let message = gettext('Failed. Please check the network.')
toaster.danger(message);
})
}
render() {
let localTime = moment.utc(this.props.repo.del_time).toDate();
localTime = moment(localTime).fromNow();
return (
 |
{this.props.repo.repo_name} |
{localTime} |
{this.state.highlight && (
)}
|
);
}
}
export default MyLibsDeleted;