diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index ed90ac92b..88132590b 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -1,4 +1,5 @@ import { writable, derived, readable } from 'svelte/store'; +import localforage from 'localforage'; import type { ExtensionsDirectory } from 'dbgate-types'; import invalidateCommands from './commands/invalidateCommands'; import getElectron from './utility/getElectron'; @@ -29,6 +30,27 @@ export function writableWithStorage(defaultValue: T, storageName) { return res; } +export function writableWithForage(defaultValue: T, storageName) { + const res = writable(defaultValue); + res.subscribe(value => { + localforage.setItem(storageName, value); + }); + localforage.getItem(storageName).then(value => { + if (value == null) { + const migrated = localStorage.getItem(storageName); + if (migrated) { + localStorage.removeItem(storageName); + const parsed = safeJsonParse(migrated, defaultValue, true); + localforage.setItem(storageName, parsed); + res.set(parsed as T); + } + } else { + res.set(value as T); + } + }); + return res; +} + export function writableSettingsValue(defaultValue: T, storageName) { const res = derived(useSettings(), $settings => { const obj = $settings || {}; @@ -63,7 +85,7 @@ export const openedConnections = writable([]); export const openedSingleDatabaseConnections = writable([]); export const expandedConnections = writable([]); export const currentDatabase = writable(null); -export const openedTabs = writableWithStorage([], 'openedTabs'); +export const openedTabs = writableWithForage([], 'openedTabs'); export const copyRowsFormat = writableWithStorage('textWithoutHeaders', 'copyRowsFormat'); export const extensions = writable(null); export const visibleCommandPalette = writable(null); diff --git a/packages/web/src/utility/ErrorHandler.svelte b/packages/web/src/utility/ErrorHandler.svelte index f71949ee0..18e65cf0e 100644 --- a/packages/web/src/utility/ErrorHandler.svelte +++ b/packages/web/src/utility/ErrorHandler.svelte @@ -1,8 +1,8 @@