// @flow import React from "react"; import { connect } from "react-redux"; import { translate } from "react-i18next"; import type { History } from "history"; import queryString from "query-string"; import { withRouter } from "react-router-dom"; import type { RepositoryCollection } from "@scm-manager/ui-types"; import { fetchRepos, fetchReposByLink, fetchReposByPage, getFetchReposFailure, getRepositoryCollection, isAbleToCreateRepos, isFetchReposPending } from "../modules/repos"; import { Page, PageActions, Button, CreateButton, Notification, LinkPaginator, getPageFromMatch } from "@scm-manager/ui-components"; import RepositoryList from "../components/list"; import { getRepositoriesLink } from "../../modules/indexResource"; type Props = { page: number, collection: RepositoryCollection, loading: boolean, error: Error, showCreateButton: boolean, reposLink: string, // context props t: string => string, history: History, location: any, // dispatched functions fetchRepos: string => void, fetchReposByPage: (link: string, page: number, filter?: any) => void, fetchReposByLink: string => void }; class Overview extends React.Component { componentDidMount() { const { fetchReposByPage, reposLink, page } = this.props; fetchReposByPage(reposLink, page, this.getQueryString()); } componentDidUpdate = (prevProps: Props) => { const { collection, page, loading, location, fetchReposByPage, reposLink } = this.props; if (collection && page && !loading) { const statePage: number = collection.page + 1; if ( page !== statePage || prevProps.location.search !== location.search ) { fetchReposByPage(reposLink, page, this.getQueryString()); } } }; render() { const { error, loading, history, t } = this.props; return ( { history.push("/repos/?q=" + filter); }} > {this.renderOverview()} {this.renderPageActionCreateButton()} ); } renderRepositoryList() { const { collection, page, t } = this.props; if (collection._embedded && collection._embedded.repositories.length > 0) { return ( <> ); } return ( {t("overview.noRepositories")} ); } renderOverview() { const { collection } = this.props; if (collection) { return ( <> {this.renderRepositoryList()} {this.renderCreateButton()} ); } return null; } renderCreateButton() { const { showCreateButton, t } = this.props; if (showCreateButton) { return ( ); } return null; } renderPageActionCreateButton() { const { showCreateButton, t } = this.props; if (showCreateButton) { return (