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 { Utils } from '../../utils/utils'; import toaster from '../../components/toast'; import Loading from '../../components/loading'; import EmptyTip from '../../components/empty-tip'; import CommonToolbar from '../../components/toolbar/common-toolbar'; 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, }); }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); } 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 ( { deletedRepos && deletedRepos.map((item) => { return ( ); })}
{/*img*/} {gettext('Name')} {gettext('Deleted Time')}
); } } 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(error => { let errMessage = Utils.getErrorMsg(error); if (errMessage === gettext('Error')) { errMessage = gettext('Failed. Please check the network.'); } toaster.danger(errMessage); }); } render() { let localTime = moment.utc(this.props.repo.del_time).toDate(); localTime = moment(localTime).fromNow(); let iconUrl = Utils.getLibIconUrl(this.props.repo); return ( {this.props.repo.repo_name} {localTime} ); } } export default MyLibsDeleted;