Custom error handling
createViewState throws on a config it cannot build.
View source — 46 lines
import { ErrorBanner } from '@jbrowse/core/ui'
import { useCreateOnce, useFinalUnmount } from '@jbrowse/core/util/hooks'
import {
JBrowseLinearGenomeView,
createViewState,
destroyViewState,
} from '@jbrowse/react-linear-genome-view2'
import type { ViewModel } from '@jbrowse/react-linear-genome-view2'
export default function ErrorHandler() {
const result = useCreateOnce<{ viewState: ViewModel } | { error: unknown }>(
() => {
try {
return {
viewState: createViewState({
assembly: {
name: 'volvox',
uri: 'https://jbrowse.org/genomes/volvox/volvox.2bit',
},
tracks: [
{
type: 'BadTrack',
notProperTrack: 'error',
shouldHaveTrackIdAndStuff: 'test',
},
],
location: 'ctgA:1105..1221',
}),
}
} catch (error) {
return { error }
}
},
)
useFinalUnmount(() => {
if ('viewState' in result) {
destroyViewState(result.viewState)
}
})
return 'error' in result ? (
<ErrorBanner error={result.error} />
) : (
<JBrowseLinearGenomeView viewState={result.viewState} />
)
}