import React from 'react';

class ErrorBoundary extends React.Component {
    constructor(props) {
        super(props);
        this.state = { hasError: false };
        this.logger = null;

        if (typeof window === 'undefined') {
            this.logger = require('../src/logger');
        }
    }

    static getDerivedStateFromError(error) {
        // Update state so the next render will show the fallback UI.
        return { hasError: true };
    }

    componentDidCatch(error, info) {
        // Log the error to an error reporting service
        console.error(error, info);
        if (this.logger) {
            this.logger.error(`${error}: ${info.componentStack}`);
        }
    }

    render() {
        if (this.state.hasError) {
            // Render any custom fallback UI
            return <h1>Нещо се обърка. Моля, опитай отново и се свържете с нас ако проблема продължи. </h1>;
        }

        return this.props.children;
    }
}

export default ErrorBoundary;
