mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-24 07:37:10 +00:00
Fix #162 Add better error message for wrong version
This commit is contained in:
@@ -19,13 +19,7 @@ type GeneratorProps = {
|
||||
}
|
||||
export function Generator({ lang, changeTitle, version, onChangeVersion }: GeneratorProps) {
|
||||
const loc = locale.bind(null, lang)
|
||||
const [errors, setErrors] = useState<string[]>([])
|
||||
const addError = (error: string) => {
|
||||
setErrors([...errors, error])
|
||||
}
|
||||
const dismissError = (error: string) => {
|
||||
setErrors(errors.filter(e => e !== error))
|
||||
}
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
const [errorBoundary, errorRetry] = useErrorBoundary()
|
||||
if (errorBoundary) {
|
||||
return <main><ErrorPanel error={`Something went wrong rendering the generator: ${errorBoundary.message}`} onDismiss={errorRetry} /></main>
|
||||
@@ -36,12 +30,20 @@ export function Generator({ lang, changeTitle, version, onChangeVersion }: Gener
|
||||
return <main><ErrorPanel error={`Cannot find generator "${getCurrentUrl()}"`} /></main>
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
setError(null)
|
||||
}, [gen.id, version])
|
||||
|
||||
const allowedVersions = config.versions
|
||||
.filter(v => checkVersion(v.id, gen.minVersion))
|
||||
.map(v => v.id as VersionId)
|
||||
|
||||
changeTitle(loc('title.generator', loc(gen.id)), allowedVersions)
|
||||
|
||||
if (!checkVersion(version, gen.minVersion)) {
|
||||
setError(`The minimum version for this generator is ${gen.minVersion}`)
|
||||
}
|
||||
|
||||
const [model, setModel] = useState<DataModel | null>(null)
|
||||
const [blockStates, setBlockStates] = useState<BlockStateRegistry | null>(null)
|
||||
useEffect(() => {
|
||||
@@ -50,7 +52,7 @@ export function Generator({ lang, changeTitle, version, onChangeVersion }: Gener
|
||||
.then(b => setBlockStates(b))
|
||||
getModel(version, gen.id)
|
||||
.then(m => setModel(m))
|
||||
.catch(e => { console.error(e); addError(e.message) })
|
||||
.catch(e => { console.error(e); setError(e.message) })
|
||||
}, [version, gen.id])
|
||||
|
||||
const reset = () => {
|
||||
@@ -97,7 +99,7 @@ export function Generator({ lang, changeTitle, version, onChangeVersion }: Gener
|
||||
setPresetResults(presets)
|
||||
}
|
||||
})
|
||||
.catch(e => { console.error(e); addError(e.message) })
|
||||
.catch(e => { console.error(e); setError(e.message) })
|
||||
}, [version, gen.id, presetFilter])
|
||||
|
||||
const loadPreset = (id: string) => {
|
||||
@@ -168,8 +170,8 @@ export function Generator({ lang, changeTitle, version, onChangeVersion }: Gener
|
||||
<Btn icon="arrow_right" label={loc('redo')} onClick={redo} />
|
||||
</BtnMenu>
|
||||
</div>
|
||||
{errors.map(e => <ErrorPanel error={e} onDismiss={() => dismissError(e)} />)}
|
||||
<Tree {...{lang, model, version, blockStates}} onError={addError} />
|
||||
{error && <ErrorPanel error={error} onDismiss={() => setError(null)} />}
|
||||
<Tree {...{lang, model, version, blockStates}} onError={setError} />
|
||||
</main>
|
||||
<div class="popup-actions" style={`--offset: -${10 + actionsShown * 50}px;`}>
|
||||
<div class={`popup-action action-preview${hasPreview ? ' shown' : ''}`} onClick={togglePreview}>
|
||||
@@ -186,10 +188,10 @@ export function Generator({ lang, changeTitle, version, onChangeVersion }: Gener
|
||||
</div>
|
||||
</div>
|
||||
<div class={`popup-preview${previewShown ? ' shown' : ''}`}>
|
||||
<PreviewPanel {...{lang, model, version, id: gen.id}} shown={previewShown} onError={addError} />
|
||||
<PreviewPanel {...{lang, model, version, id: gen.id}} shown={previewShown} onError={setError} />
|
||||
</div>
|
||||
<div class={`popup-source${sourceShown ? ' shown' : ''}`}>
|
||||
<SourcePanel {...{lang, model, blockStates, doCopy, doDownload, doImport}} name={gen.schema ?? 'data'} onError={addError} />
|
||||
<SourcePanel {...{lang, model, blockStates, doCopy, doDownload, doImport}} name={gen.schema ?? 'data'} onError={setError} />
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user