diff --git a/scm-ui/src/changesets/containers/Changesets.js b/scm-ui/src/changesets/containers/Changesets.js index 48e95dd5d6..64b56fa559 100644 --- a/scm-ui/src/changesets/containers/Changesets.js +++ b/scm-ui/src/changesets/containers/Changesets.js @@ -1,11 +1,12 @@ import React from "react" import {connect} from "react-redux"; +import {ErrorNotification, Loading} from "@scm-manager/ui-components"; import { fetchChangesetsByNamespaceAndName, fetchChangesetsByNamespaceNameAndBranch, - getChangesets, + getChangesets, getFetchChangesetsFailure, isFetchChangesetsPending, } from "../modules/changesets"; -import type { History } from "history"; +import type {History} from "history"; import {fetchBranchesByNamespaceAndName, getBranchNames} from "../../repos/modules/branches"; import type {Repository} from "@scm-manager/ui-types"; import ChangesetTable from "../components/ChangesetTable"; @@ -23,8 +24,7 @@ type Props = { class Changesets extends React.Component { constructor(props) { super(props); - this.state = { - }; + this.state = {}; } componentDidMount() { @@ -39,24 +39,35 @@ class Changesets extends React.Component { } render() { - const {changesets, branchNames} = this.props; - const branch = this.props.match.params.branch; - if (changesets === null) { - return null - } - if (branchNames) { - return
- this.branchChanged(branch)}/> - -
; - } else { - return + const {changesets, loading, error} = this.props; + if (loading || !changesets) { + return } + return
+ + {this.renderContent()} +
} + renderContent = () => { + const branch = this.props.match.params.branch; + const {changesets, branchNames} = this.props; + + if (branchNames) { + return
+ this.branchChanged(branch)}/> + +
; + } + + return + }; + + branchChanged = (branchName: string) => { - const { history, repository } = this.props; + const {history, repository} = this.props; history.push(`/repo/${repository.namespace}/${repository.name}/history/${branchName}`); }; } @@ -65,8 +76,10 @@ class Changesets extends React.Component { const mapStateToProps = (state, ownProps: Props) => { const {namespace, name} = ownProps.repository; return { - changesets: getChangesets(namespace, name, ownProps.match.params.branch, state), - branchNames: getBranchNames(namespace, name, state) + loading: isFetchChangesetsPending(namespace, name, state), + changesets: getChangesets(state, namespace, name, ownProps.match.params.branch), + branchNames: getBranchNames(namespace, name, state), + error: getFetchChangesetsFailure(state, namespace, name, ownProps.match.params.branch) } }; diff --git a/scm-ui/src/changesets/modules/changesets.js b/scm-ui/src/changesets/modules/changesets.js index e5f41fda20..498f6b3aea 100644 --- a/scm-ui/src/changesets/modules/changesets.js +++ b/scm-ui/src/changesets/modules/changesets.js @@ -119,7 +119,7 @@ export function getChangesetsForNamespaceAndNameFromState(namespace: string, nam return Object.values(state.changesets[key].byId); } -export function getChangesets(namespace: string, name: string, branch: string, state: Object) { +export function getChangesets(state: Object, namespace: string, name: string, branch: string) { const key = createItemId(namespace, name, branch); if (!state.changesets[key]) { return null;