/* GoToSocial Copyright (C) GoToSocial Authors admin@gotosocial.org SPDX-License-Identifier: AGPL-3.0-or-later This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import React, { Component, ReactNode } from "react"; interface ErrorBoundaryProps { children?: ReactNode; } interface ErrorBoundaryState { hadError?: boolean; componentStack?; error?; } class ErrorBoundary extends Component { resetErrorBoundary: () => void; constructor(props: ErrorBoundaryProps) { super(props); this.state = {}; this.resetErrorBoundary = () => { this.setState({}); }; } static getDerivedStateFromError(error) { return { hadError: true, error }; } componentDidCatch(_e, info) { this.setState({ ...this.state, componentStack: info.componentStack }); } render() { if (this.state.hadError) { return ( ); } else { return this.props.children; } } } function ErrorFallback({ error, componentStack, resetErrorBoundary }) { return (

{"An error occured, please report this on the "} GoToSocial issue tracker {" or "} Matrix support room.
Include the details below:

					{error.name}: {error.message}

					{componentStack && [
						"\n\nComponent trace:",
						componentStack
					]}
					{["\n\nError trace: ", error.stack]}
				

or refresh the page

); } export { ErrorBoundary };