import React, { Component, Fragment } from 'react';
import { navigate } from '@reach/router';
import { Button } from 'reactstrap';
import { Utils } from '../../../utils/utils';
import { seafileAPI } from '../../../utils/seafile-api';
import { gettext, siteRoot } from '../../../utils/constants';
import toaster from '../../../components/toast';
import SysAdminCreateRepoDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-create-repo-dialog';
import MainPanelTopbar from '../main-panel-topbar';
import Search from '../search';
import ReposNav from './repos-nav';
import Content from './repos';
class AllRepos extends Component {
constructor(props) {
super(props);
this.state = {
loading: true,
errorMsg: '',
repos: [],
pageInfo: {},
perPage: 25,
isCreateRepoDialogOpen: false
};
}
componentDidMount () {
let urlParams = (new URL(window.location)).searchParams;
const { currentPage = 1, perPage } = this.state;
this.setState({
perPage: parseInt(urlParams.get('per_page') || perPage),
currentPage: parseInt(urlParams.get('page') || currentPage)
}, () => {
this.getReposByPage(this.state.currentPage);
});
}
toggleCreateRepoDialog = () => {
this.setState({isCreateRepoDialogOpen: !this.state.isCreateRepoDialogOpen});
}
getReposByPage = (page) => {
seafileAPI.sysAdminListAllRepos(page, this.state.perPage).then((res) => {
this.setState({
loading: false,
repos: res.data.repos,
pageInfo: res.data.page_info
});
}).catch((error) => {
this.setState({
loading: false,
errorMsg: Utils.getErrorMsg(error, true) // true: show login tip if 403
});
});
}
resetPerPage = (perPage) => {
this.setState({
perPage: perPage
}, () => {
this.getReposByPage(1);
});
}
createRepo = (repoName, Owner) => {
seafileAPI.sysAdminCreateRepo(repoName, Owner).then(res => {
this.state.repos.unshift(res.data);
this.setState({
repos: this.state.repos
});
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
}
onDeleteRepo = (targetRepo) => {
let repos = this.state.repos.filter(repo => {
return repo.id != targetRepo.id;
});
this.setState({
repos: repos
});
}
onTransferRepo = (targetRepo) => {
let repos = this.state.repos.map((item) => {
return item.id == targetRepo.id ? targetRepo : item;
});
this.setState({
repos: repos
});
}
getSearch = () => {
return ;
}
searchRepos = (repoName) => {
navigate(`${siteRoot}sys/search-libraries/?name=${encodeURIComponent(repoName)}`);
}
render() {
let { isCreateRepoDialogOpen } = this.state;
return (
{isCreateRepoDialogOpen &&
}
);
}
}
export default AllRepos;