mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 16:05:44 +01:00
improve location of ErrorBoundaries
This commit is contained in:
@@ -32,15 +32,16 @@ class Page extends React.Component<Props> {
|
|||||||
render() {
|
render() {
|
||||||
const { error } = this.props;
|
const { error } = this.props;
|
||||||
return (
|
return (
|
||||||
<ErrorBoundary>
|
|
||||||
<section className="section">
|
<section className="section">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{this.renderPageHeader()}
|
{this.renderPageHeader()}
|
||||||
<ErrorNotification error={error} />
|
<ErrorBoundary>
|
||||||
|
<ErrorNotification error={error}/>
|
||||||
{this.renderContent()}
|
{this.renderContent()}
|
||||||
|
</ErrorBoundary>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</ErrorBoundary>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,15 +68,15 @@ class Page extends React.Component<Props> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
let underline = pageActionsExists ? (
|
let underline = pageActionsExists ? (
|
||||||
<hr className="header-with-actions" />
|
<hr className="header-with-actions"/>
|
||||||
) : null;
|
) : null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="columns">
|
<div className="columns">
|
||||||
<div className="column">
|
<div className="column">
|
||||||
<Title title={title} />
|
<Title title={title}/>
|
||||||
<Subtitle subtitle={subtitle} />
|
<Subtitle subtitle={subtitle}/>
|
||||||
</div>
|
</div>
|
||||||
{pageActions}
|
{pageActions}
|
||||||
</div>
|
</div>
|
||||||
@@ -91,7 +92,7 @@ class Page extends React.Component<Props> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (loading) {
|
if (loading) {
|
||||||
return <Loading />;
|
return <Loading/>;
|
||||||
}
|
}
|
||||||
|
|
||||||
let content = [];
|
let content = [];
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { connect } from "react-redux";
|
|||||||
import { translate } from "react-i18next";
|
import { translate } from "react-i18next";
|
||||||
import { withRouter } from "react-router-dom";
|
import { withRouter } from "react-router-dom";
|
||||||
|
|
||||||
import { Loading, ErrorPage } from "@scm-manager/ui-components";
|
import { Loading, ErrorBoundary } from "@scm-manager/ui-components";
|
||||||
import {
|
import {
|
||||||
fetchIndexResources,
|
fetchIndexResources,
|
||||||
getFetchIndexResourcesFailure,
|
getFetchIndexResourcesFailure,
|
||||||
@@ -15,6 +15,7 @@ import {
|
|||||||
import PluginLoader from "./PluginLoader";
|
import PluginLoader from "./PluginLoader";
|
||||||
import type { IndexResources } from "@scm-manager/ui-types";
|
import type { IndexResources } from "@scm-manager/ui-types";
|
||||||
import ScrollToTop from "./ScrollToTop";
|
import ScrollToTop from "./ScrollToTop";
|
||||||
|
import IndexErrorPage from "./IndexErrorPage";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
error: Error,
|
error: Error,
|
||||||
@@ -55,17 +56,12 @@ class Index extends Component<Props, State> {
|
|||||||
const { pluginsLoaded } = this.state;
|
const { pluginsLoaded } = this.state;
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
return (
|
return <IndexErrorPage error={error}/>;
|
||||||
<ErrorPage
|
|
||||||
title={t("app.error.title")}
|
|
||||||
subtitle={t("app.error.subtitle")}
|
|
||||||
error={error}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
} else if (loading || !indexResources) {
|
} else if (loading || !indexResources) {
|
||||||
return <Loading />;
|
return <Loading />;
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
|
<ErrorBoundary fallback={IndexErrorPage}>
|
||||||
<ScrollToTop>
|
<ScrollToTop>
|
||||||
<PluginLoader
|
<PluginLoader
|
||||||
loaded={pluginsLoaded}
|
loaded={pluginsLoaded}
|
||||||
@@ -74,6 +70,7 @@ class Index extends Component<Props, State> {
|
|||||||
<App />
|
<App />
|
||||||
</PluginLoader>
|
</PluginLoader>
|
||||||
</ScrollToTop>
|
</ScrollToTop>
|
||||||
|
</ErrorBoundary>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
26
scm-ui/src/containers/IndexErrorPage.js
Normal file
26
scm-ui/src/containers/IndexErrorPage.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
//@flow
|
||||||
|
import React from "react";
|
||||||
|
import { translate, type TFunction } from "react-i18next";
|
||||||
|
import { ErrorPage } from "@scm-manager/ui-components";
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
error: Error,
|
||||||
|
t: TFunction
|
||||||
|
}
|
||||||
|
|
||||||
|
class IndexErrorPage extends React.Component<Props> {
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { error, t } = this.props;
|
||||||
|
return (
|
||||||
|
<ErrorPage
|
||||||
|
title={t("app.error.title")}
|
||||||
|
subtitle={t("app.error.subtitle")}
|
||||||
|
error={error}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translate("commons")(IndexErrorPage);
|
||||||
@@ -9,7 +9,7 @@ import Users from "../users/containers/Users";
|
|||||||
import Login from "../containers/Login";
|
import Login from "../containers/Login";
|
||||||
import Logout from "../containers/Logout";
|
import Logout from "../containers/Logout";
|
||||||
|
|
||||||
import {ErrorBoundary, ProtectedRoute} from "@scm-manager/ui-components";
|
import {ProtectedRoute} from "@scm-manager/ui-components";
|
||||||
import {binder, ExtensionPoint } from "@scm-manager/ui-extensions";
|
import {binder, ExtensionPoint } from "@scm-manager/ui-extensions";
|
||||||
|
|
||||||
import AddUser from "../users/containers/AddUser";
|
import AddUser from "../users/containers/AddUser";
|
||||||
@@ -38,7 +38,6 @@ class Main extends React.Component<Props> {
|
|||||||
url = redirectUrlFactory(this.props);
|
url = redirectUrlFactory(this.props);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<ErrorBoundary>
|
|
||||||
<div className="main">
|
<div className="main">
|
||||||
<Switch>
|
<Switch>
|
||||||
<Redirect exact from="/" to={url}/>
|
<Redirect exact from="/" to={url}/>
|
||||||
@@ -130,7 +129,6 @@ class Main extends React.Component<Props> {
|
|||||||
/>
|
/>
|
||||||
</Switch>
|
</Switch>
|
||||||
</div>
|
</div>
|
||||||
</ErrorBoundary>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user