From 33976605db29f3eb67d106de1f5b611c6991faef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maren=20S=C3=BCwer?= Date: Thu, 23 Aug 2018 11:00:14 +0200 Subject: [PATCH] safe state in props and show loading and error state --- .../src/permissions/containers/Permissions.js | 51 ++++++++++++++++--- scm-ui/src/repos/containers/RepositoryRoot.js | 7 ++- 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/scm-ui/src/permissions/containers/Permissions.js b/scm-ui/src/permissions/containers/Permissions.js index 48b7aa5990..ea107289fa 100644 --- a/scm-ui/src/permissions/containers/Permissions.js +++ b/scm-ui/src/permissions/containers/Permissions.js @@ -2,14 +2,30 @@ import React from "react"; import connect from "react-redux/es/connect/connect"; import { translate } from "react-i18next"; -import { fetchPermissions } from "../modules/permissions"; +import { + fetchPermissions, + getFetchPermissionsFailure, + isFetchPermissionsPending, + getPermissionsOfRepo +} from "../modules/permissions"; +import type { History } from "history"; +import Loading from "../../components/Loading"; +import ErrorPage from "../../components/ErrorPage"; type Props = { namespace: string, name: string, + loading: boolean, + error: Error, + permissions: Permissions, //dispatch functions - fetchPermissions: (namespace: string, name: string) => void + fetchPermissions: (namespace: string, name: string) => void, + + // context props + t: string => string, + history: History, + match: any }; class Permissions extends React.Component { @@ -20,15 +36,38 @@ class Permissions extends React.Component { } render() { + const { namespace, name, loading, error, permissions, t } = this.props; + + if (error) { + return ( + + ); + } + + if (loading || !permissions) { + return ; + } + return
Permissions will be shown here!
; } } const mapStateToProps = (state, ownProps) => { - // const { namespace, name } = ownProps.match.params; + const namespace = ownProps.namespace; + const name = ownProps.name; + const error = getFetchPermissionsFailure(state); + const loading = isFetchPermissionsPending(state); + const permissions = getPermissionsOfRepo(state, namespace, name); return { - //namespace, - //name + namespace, + name, + error, + loading, + permissions }; }; @@ -43,4 +82,4 @@ const mapDispatchToProps = dispatch => { export default connect( mapStateToProps, mapDispatchToProps -)(translate("repos")(Permissions)); +)(translate("permissions")(Permissions)); diff --git a/scm-ui/src/repos/containers/RepositoryRoot.js b/scm-ui/src/repos/containers/RepositoryRoot.js index bff19c2405..c8dacbdc5e 100644 --- a/scm-ui/src/repos/containers/RepositoryRoot.js +++ b/scm-ui/src/repos/containers/RepositoryRoot.js @@ -101,7 +101,12 @@ class RepositoryRoot extends React.Component { /> } + component={() => ( + + )} />