mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-04 02:04:06 +00:00
36 lines
689 B
TypeScript
36 lines
689 B
TypeScript
"use client";
|
|
|
|
import {
|
|
type ComponentType,
|
|
lazy,
|
|
type ReactNode,
|
|
Suspense,
|
|
useState,
|
|
} from "react";
|
|
|
|
import { SidePanelErrorBoundary } from "./side-panel-error-boundary";
|
|
|
|
interface RetryableLazyContentProps {
|
|
load: () => Promise<{ default: ComponentType }>;
|
|
fallback: ReactNode;
|
|
}
|
|
|
|
export function RetryableLazyContent({
|
|
load,
|
|
fallback,
|
|
}: RetryableLazyContentProps) {
|
|
const [Content, setContent] = useState(() => lazy(load));
|
|
|
|
const handleRetry = () => {
|
|
setContent(lazy(load));
|
|
};
|
|
|
|
return (
|
|
<SidePanelErrorBoundary onRetry={handleRetry}>
|
|
<Suspense fallback={fallback}>
|
|
<Content />
|
|
</Suspense>
|
|
</SidePanelErrorBoundary>
|
|
);
|
|
}
|