handle JSON in text cells

This commit is contained in:
Jan Prochazka
2022-02-10 09:46:07 +01:00
parent a768547e80
commit 253ec934ed
4 changed files with 32 additions and 15 deletions

View File

@@ -2,9 +2,9 @@ import { writable, derived, readable } from 'svelte/store';
import { ExtensionsDirectory } from 'dbgate-types';
import invalidateCommands from './commands/invalidateCommands';
import getElectron from './utility/getElectron';
import { GlobalCommand } from './commands/registerCommand';
import { useConfig, useSettings } from './utility/metadataLoaders';
import _ from 'lodash';
import { safeJsonParse } from 'dbgate-tools';
export interface TabDefinition {
title: string;
@@ -18,18 +18,9 @@ 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<T>(defaultValue: T, storageName) {
const init = localStorage.getItem(storageName);
const res = writable<T>(init ? safeJsonParse(init, defaultValue) : defaultValue);
const res = writable<T>(init ? safeJsonParse(init, defaultValue, true) : defaultValue);
res.subscribe(value => {
localStorage.setItem(storageName, JSON.stringify(value));
});