import React, { Component, Fragment } from 'react'; import { seafileAPI } from '../../utils/seafile-api'; import { gettext, loginUrl} from '../../utils/constants'; import CommonToolbar from '../../components/toolbar/common-toolbar'; import RepoViewToolbar from '../../components/toolbar/repo-view-toobar'; import LibDetail from '../../components/dirent-detail/lib-details'; import Content from './content'; class MyLibraries extends Component { constructor(props) { super(props); this.state = { isShowDetails: false, loading: true, errorMsg: '', items: [], }; } componentDidMount() { seafileAPI.listRepos({type: 'mine'}).then((res) => { // res: {data: {...}, status: 200, statusText: "OK", headers: {…}, config: {…}, …} this.setState({ loading: false, items: res.data.repos }); }).catch((error) => { if (error.response) { if (error.response.status == 403) { this.setState({ loading: false, errorMsg: gettext('Permission denied') }); location.href = `${loginUrl}?next=${encodeURIComponent(location.href)}`; } else { this.setState({ loading: false, errorMsg: gettext('Error') }); } } else { this.setState({ loading: false, errorMsg: gettext('Please check the network.') }); } }); } onCreateRepo = (repo) => { let permission = repo.permission; seafileAPI.createMineRepo(repo).then((res) => { let repo = { repo_id: res.data.repo_id, repo_name: res.data.repo_name, size: res.data.repo_size, mtime: res.data.mtime, owner_email: res.data.email, encrypted: res.data.encrypted, permission: permission, }; this.state.items.unshift(repo); this.setState({items: this.state.items}); }); } onTransferRepo = (repoID) => { let items = this.state.items.filter(item => { return item.repo_id !== repoID; }) this.setState({items: items}); } onRenameRepo = (repo, newName) => { let items = this.state.items.map(item => { if (item.repo_id === repo.repo_id) { item.repo_name = newName; } return item; }); this.setState({items: items}); } onDeleteRepo = (repo) => { let items = this.state.items.filter(item => { return item.repo_id !== repo.repo_id; }); this.setState({items: items}); } onRepoDetails = (repo) => { this.setState({ isShowDetails: true, currentRepo: repo }) } closeDetails = () => { this.setState({ isShowDetails: !this.state.isShowDetails }); } render() { return (

{gettext('My Libraries')}

{this.state.isShowDetails && (
)}
); } } export default MyLibraries;