Add error boundary for preview panel

This commit is contained in:
Misode
2024-12-03 21:13:33 +01:00
parent 8f37b45ae1
commit 1d1bae9459
2 changed files with 33 additions and 8 deletions

View File

@@ -32,8 +32,11 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
const [error, setError] = useState<Error | string | null>(null)
const [errorBoundary, errorRetry] = useErrorBoundary()
if (errorBoundary) {
errorBoundary.message = `Something went wrong rendering the generator: ${errorBoundary.message}`
return <main><ErrorPanel error={errorBoundary} onDismiss={errorRetry} /></main>
const generatorError = new Error(`Generator error: ${errorBoundary.message}`)
if (errorBoundary.stack) {
generatorError.stack = errorBoundary.stack
}
return <main><ErrorPanel error={generatorError} onDismiss={errorRetry} /></main>
}
useEffect(() => Store.visitGenerator(gen.id), [gen.id])
@@ -405,7 +408,7 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
</div>
</div>
<div class={`popup-preview${previewShown ? ' shown' : ''}`}>
<PreviewPanel docAndNode={docAndNode} id={gen.id} shown={previewShown} onError={setError} />
<PreviewPanel docAndNode={docAndNode} id={gen.id} shown={previewShown} />
</div>
<div class={`popup-source${sourceShown ? ' shown' : ''}`}>
<SourcePanel docAndNode={docAndNode} {...{doCopy, doDownload, doImport}} copySuccess={copySuccess} onError={setError} />