diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 88132590b..94751c664 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -30,7 +30,7 @@ export function writableWithStorage(defaultValue: T, storageName) { return res; } -export function writableWithForage(defaultValue: T, storageName) { +export function writableWithForage(defaultValue: T, storageName, safeConvertor?) { const res = writable(defaultValue); res.subscribe(value => { localforage.setItem(storageName, value); @@ -45,7 +45,7 @@ export function writableWithForage(defaultValue: T, storageName) { res.set(parsed as T); } } else { - res.set(value as T); + res.set(safeConvertor ? safeConvertor(value) : (value as T)); } }); return res; @@ -85,7 +85,7 @@ export const openedConnections = writable([]); export const openedSingleDatabaseConnections = writable([]); export const expandedConnections = writable([]); export const currentDatabase = writable(null); -export const openedTabs = writableWithForage([], 'openedTabs'); +export const openedTabs = writableWithForage([], 'openedTabs', x => [...(x || [])]); export const copyRowsFormat = writableWithStorage('textWithoutHeaders', 'copyRowsFormat'); export const extensions = writable(null); export const visibleCommandPalette = writable(null);