From cf664de29befeb690713b50dc6ae246e1c6a08ee Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 10 May 2021 23:22:03 +0300 Subject: [PATCH] - fix: persist table-sort params and cluster-view's sidebar state to lens-local-storage - new-feature: auto-open main-window's devtools in development-mode (yes/no/ugly?) Signed-off-by: Roman --- src/main/window-manager.ts | 6 +++--- src/renderer/utils/storageHelper.ts | 13 +++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/window-manager.ts b/src/main/window-manager.ts index d11b15a6f3..82288afcb6 100644 --- a/src/main/window-manager.ts +++ b/src/main/window-manager.ts @@ -1,5 +1,5 @@ import type { ClusterId } from "../common/cluster-store"; -import { observable, makeObservable } from "mobx"; +import { makeObservable, observable } from "mobx"; import { app, BrowserWindow, dialog, shell, webContents } from "electron"; import windowStateKeeper from "electron-window-state"; import { appEventBus } from "../common/event-bus"; @@ -10,7 +10,7 @@ import { Singleton } from "../common/utils"; import { ClusterFrameInfo, clusterFrameMap } from "../common/cluster-frames"; import { IpcRendererNavigationEvents } from "../renderer/navigation/events"; import logger from "./logger"; -import { productName } from "../common/vars"; +import { isDevelopment, productName } from "../common/vars"; import { LensProxy } from "./proxy/lens-proxy"; export class WindowManager extends Singleton { @@ -85,7 +85,7 @@ export class WindowManager extends Singleton { shell.openExternal(url); }) .on("dom-ready", () => { - // this.mainWindow.webContents.openDevTools({ mode: "right", activate: !isProduction }); + this.mainWindow.webContents.openDevTools({ mode: "right", activate: isDevelopment }); appEventBus.emit({ name: "app", action: "dom-ready" }); }) .on("did-fail-load", (_event, code, desc) => { diff --git a/src/renderer/utils/storageHelper.ts b/src/renderer/utils/storageHelper.ts index ba8d8f24ab..980f1c47a3 100755 --- a/src/renderer/utils/storageHelper.ts +++ b/src/renderer/utils/storageHelper.ts @@ -1,6 +1,6 @@ // Helper for working with storages (e.g. window.localStorage, NodeJS/file-system, etc.) -import { action, makeObservable, observable, toJS, when, } from "mobx"; +import { action, comparer, makeObservable, observable, toJS, when, } from "mobx"; import produce, { Draft } from "immer"; import { isEqual, isFunction, isPlainObject } from "lodash"; import logger from "../../main/logger"; @@ -21,9 +21,13 @@ export interface StorageHelperOptions { export class StorageHelper { static logPrefix = "[StorageHelper]:"; - readonly storage: StorageAdapter; - private data = observable.box(); + + private data = observable.box(undefined, { + deep: true, + equals: comparer.structural, + }); + @observable initialized = false; get whenReady() { @@ -39,6 +43,7 @@ export class StorageHelper { makeObservable(this); const { storage, autoInit = true } = options; + this.storage = storage; this.data.observe_(({ newValue, oldValue }) => { @@ -124,7 +129,7 @@ export class StorageHelper { @action merge(value: Partial | ((draft: Draft) => Partial | void)) { - const nextValue = produce(this.get(), (state: Draft) => { + const nextValue = produce(this.toJSON(), (state: Draft) => { const newValue = isFunction(value) ? value(state) : value; return isPlainObject(newValue)