From 8592039b563fea1e9f01d52c19bbf04723a55c04 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Mon, 7 Feb 2022 21:15:11 +0100 Subject: [PATCH] fixed crash when there is invalid JSON in local storage --- packages/web/src/stores.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 8bc5649fe..7f6885ad7 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -18,9 +18,18 @@ export interface TabDefinition { tabOrder?: number; } +function safeJsonParse(json, defaultValue) { + try { + return JSON.parse(json); + } catch (err) { + console.error(`Error parsing JSON value "${json}"`, err); + return defaultValue; + } +} + export function writableWithStorage(defaultValue: T, storageName) { const init = localStorage.getItem(storageName); - const res = writable(init ? JSON.parse(init) : defaultValue); + const res = writable(init ? safeJsonParse(init, defaultValue) : defaultValue); res.subscribe(value => { localStorage.setItem(storageName, JSON.stringify(value)); });