Skip to content
LoadingBoundary.js 821 B
Newer Older
import React, { Suspense } from 'react';
import { Alert } from 'react-bootstrap';
import Loader from './Loader';
import { NetworkErrorBoundary } from 'rest-hooks';

function LoadingBoundary(props) {
Axel Bocciarelli's avatar
Axel Bocciarelli committed
  const {
    customLoader,
    withSilentError = false,
    children,
    ...loaderProps
  } = props;

  const loader =
    customLoader !== undefined ? customLoader : <Loader {...loaderProps} />;

  const errorFallback = withSilentError
    ? () => null
    : ({ error }) => (
        <Alert bsStyle="warning" style={{ marginTop: 16 }}>
          An error occured: {error.message}
        </Alert>
      );

Axel Bocciarelli's avatar
Axel Bocciarelli committed
    <Suspense fallback={loader}>
      <NetworkErrorBoundary fallbackComponent={errorFallback}>
        {children}
      </NetworkErrorBoundary>
    </Suspense>
  );
}

export default LoadingBoundary;