Skip to content

Commit 071b1d1

Browse files
committed
fix: alert if deserialization fails
closes #256
1 parent 10124d7 commit 071b1d1

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/store.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,14 @@ export function useStore(
271271
const deserialize: ReplStore['deserialize'] = (serializedState: string) => {
272272
if (serializedState.startsWith('#'))
273273
serializedState = serializedState.slice(1)
274-
const saved = JSON.parse(atou(serializedState))
274+
let saved: any
275+
try {
276+
saved = JSON.parse(atou(serializedState))
277+
} catch (err) {
278+
console.error(err)
279+
alert('Failed to load code from URL.')
280+
return setDefaultFile()
281+
}
275282
for (const filename in saved) {
276283
if (filename === '_version') {
277284
vueVersion.value = saved[filename]
@@ -313,16 +320,19 @@ export function useStore(
313320
applyBuiltinImportMap()
314321
setActive(store.mainFile)
315322
}
316-
317-
if (serializedState) {
318-
deserialize(serializedState)
319-
} else {
323+
const setDefaultFile = (): void => {
320324
setFile(
321325
files.value,
322326
mainFile.value,
323327
template.value.welcomeSFC || welcomeSFCCode,
324328
)
325329
}
330+
331+
if (serializedState) {
332+
deserialize(serializedState)
333+
} else {
334+
setDefaultFile()
335+
}
326336
if (!files.value[mainFile.value]) {
327337
mainFile.value = Object.keys(files.value)[0]
328338
}

0 commit comments

Comments
 (0)