Fix issue when switching versions and generators at the same time

This commit is contained in:
Misode
2024-11-27 00:11:43 +01:00
parent 2f5f18777d
commit 283248911b
3 changed files with 22 additions and 26 deletions

View File

@@ -204,9 +204,7 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
const loadPreset = async (id: string) => {
try {
const preset = await fetchPreset(version, genPath(gen, version), id)
// TODO: sync random seed
return preset
return await fetchPreset(version, genPath(gen, version), id)
} catch (e) {
setError(`Cannot load preset ${id} in ${version}`)
setCurrentPreset(undefined, true)
@@ -235,27 +233,21 @@ export function SchemaGenerator({ gen, allowedVersions }: Props) {
setShareUrl(`${location.origin}/${gen.url}/?version=${version}&preset=${currentPreset}`)
setShareShown(true)
copySharedId()
} else {
// TODO: check if files hasn't been modified compared to the default
if (false) {
setShareUrl(`${location.origin}/${gen.url}/?version=${version}`)
setShareShown(true)
} else if (doc) {
setShareLoading(true)
shareSnippet(gen.id, version, doc.getText(), previewShown)
.then(({ id, length, compressed, rate }) => {
Analytics.createSnippet(gen.id, id, version, length, compressed, rate)
const url = `${location.origin}/${gen.url}/?${SHARE_KEY}=${id}`
setShareUrl(url)
setShareShown(true)
})
.catch(e => {
if (e instanceof Error) {
setError(e)
}
})
.finally(() => setShareLoading(false))
}
} else if (doc) {
setShareLoading(true)
shareSnippet(gen.id, version, doc.getText(), previewShown)
.then(({ id, length, compressed, rate }) => {
Analytics.createSnippet(gen.id, id, version, length, compressed, rate)
const url = `${location.origin}/${gen.url}/?${SHARE_KEY}=${id}`
setShareUrl(url)
setShareShown(true)
})
.catch(e => {
if (e instanceof Error) {
setError(e)
}
})
.finally(() => setShareLoading(false))
}
}
const copySharedId = () => {

View File

@@ -148,7 +148,6 @@ export function SourcePanel({ docAndNode, doCopy, doDownload, doImport, copySucc
}
}, [highlighting])
// TODO: when file contents change, retransform
useEffect(() => {
if (retransform.current && text !== undefined) {
retransform.current()

View File

@@ -160,7 +160,12 @@ export class SpyglassService {
}
private async notifyChange(doc: TextDocument) {
await this.service.project.onDidChange(doc.uri, [{ text: doc.getText() }], doc.version + 1)
const docAndNode = this.service.project.getClientManaged(doc.uri)
if (docAndNode) {
await this.service.project.onDidChange(doc.uri, [{ text: doc.getText() }], doc.version + 1)
} else {
await this.service.project.onDidOpen(doc.uri, doc.languageId, doc.version, doc.getText())
}
await this.service.project.ensureClientManagedChecked(doc.uri)
}