From 6391d45ff4b526c65b2aafcd670977d98c23cf7d Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 25 Nov 2021 19:02:59 +0200 Subject: [PATCH] Mobx package upgrade (#4357) --- package.json | 4 ++-- src/common/base-store.ts | 7 +++++-- src/common/configure-packages.ts | 1 - .../components/+namespaces/namespace.store.ts | 8 ++++---- .../delete-cluster-dialog.tsx | 9 +++------ src/renderer/components/dock/dock.store.ts | 18 ++++++++++++------ yarn.lock | 13 +++++++++---- 7 files changed, 35 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 914b8d82a7..393e64e3b4 100644 --- a/package.json +++ b/package.json @@ -215,8 +215,8 @@ "mac-ca": "^1.0.6", "marked": "^2.1.3", "md5-file": "^5.0.0", - "mobx": "^6.3.0", - "mobx-observable-history": "^2.0.1", + "mobx": "^6.3.7", + "mobx-observable-history": "^2.0.3", "mobx-react": "^7.2.1", "mock-fs": "^4.14.0", "moment": "^2.29.1", diff --git a/src/common/base-store.ts b/src/common/base-store.ts index 565c3cad89..9f00ec3fbb 100644 --- a/src/common/base-store.ts +++ b/src/common/base-store.ts @@ -23,7 +23,7 @@ import path from "path"; import Config from "conf"; import type { Options as ConfOptions } from "conf/dist/source/types"; import { ipcMain, ipcRenderer } from "electron"; -import { IReactionOptions, makeObservable, reaction, runInAction } from "mobx"; +import { IEqualsComparer, makeObservable, reaction, runInAction } from "mobx"; import { getAppVersion, Singleton, toJS, Disposer } from "./utils"; import logger from "../main/logger"; import { broadcastMessage, ipcMainOn, ipcRendererOn } from "./ipc"; @@ -33,7 +33,10 @@ import { kebabCase } from "lodash"; import { AppPaths } from "./app-paths"; export interface BaseStoreParams extends ConfOptions { - syncOptions?: IReactionOptions; + syncOptions?: { + fireImmediately?: boolean; + equals?: IEqualsComparer; + }; } /** diff --git a/src/common/configure-packages.ts b/src/common/configure-packages.ts index 07e47d883c..a085f3e8d7 100644 --- a/src/common/configure-packages.ts +++ b/src/common/configure-packages.ts @@ -29,7 +29,6 @@ export default function configurePackages() { // Docs: https://mobx.js.org/configuration.html Mobx.configure({ enforceActions: "never", - isolateGlobalState: true, // TODO: enable later (read more: https://mobx.js.org/migrating-from-4-or-5.html) // computedRequiresReaction: true, diff --git a/src/renderer/components/+namespaces/namespace.store.ts b/src/renderer/components/+namespaces/namespace.store.ts index 093a3301ae..1fc9100935 100644 --- a/src/renderer/components/+namespaces/namespace.store.ts +++ b/src/renderer/components/+namespaces/namespace.store.ts @@ -19,7 +19,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import { action, comparer, computed, IReactionDisposer, IReactionOptions, makeObservable, reaction } from "mobx"; +import { action, comparer, computed, IReactionDisposer, makeObservable, reaction } from "mobx"; import { autoBind, createStorage, noop, ToggleSet } from "../../utils"; import { KubeObjectStore, KubeObjectStoreLoadingParams } from "../../../common/k8s-api/kube-object.store"; import { Namespace, namespacesApi } from "../../../common/k8s-api/endpoints/namespaces.api"; @@ -45,10 +45,10 @@ export class NamespaceStore extends KubeObjectStore { this.autoLoadAllowedNamespaces(); } - public onContextChange(callback: (namespaces: string[]) => void, opts: IReactionOptions = {}): IReactionDisposer { + public onContextChange(callback: (namespaces: string[]) => void, opts: { fireImmediately?: boolean } = {}): IReactionDisposer { return reaction(() => Array.from(this.contextNamespaces), callback, { + fireImmediately: opts.fireImmediately, equals: comparer.shallow, - ...opts, }); } @@ -205,7 +205,7 @@ export class NamespaceStore extends KubeObjectStore { * explicitly deselected. * @param namespace The name of a namespace */ - toggleSingle(namespace: string){ + toggleSingle(namespace: string) { const nextState = new ToggleSet(this.contextNamespaces); nextState.toggle(namespace); diff --git a/src/renderer/components/delete-cluster-dialog/delete-cluster-dialog.tsx b/src/renderer/components/delete-cluster-dialog/delete-cluster-dialog.tsx index 458216f6d7..c677a8995c 100644 --- a/src/renderer/components/delete-cluster-dialog/delete-cluster-dialog.tsx +++ b/src/renderer/components/delete-cluster-dialog/delete-cluster-dialog.tsx @@ -52,15 +52,12 @@ type Props = {}; @observer export class DeleteClusterDialog extends React.Component { - showContextSwitch = false; - newCurrentContext = ""; + @observable showContextSwitch = false; + @observable newCurrentContext = ""; constructor(props: Props) { super(props); - makeObservable(this, { - showContextSwitch: observable, - newCurrentContext: observable, - }); + makeObservable(this); } static open({ config, cluster }: Partial) { diff --git a/src/renderer/components/dock/dock.store.ts b/src/renderer/components/dock/dock.store.ts index a3b0886cee..372ecbf871 100644 --- a/src/renderer/components/dock/dock.store.ts +++ b/src/renderer/components/dock/dock.store.ts @@ -20,7 +20,7 @@ */ import * as uuid from "uuid"; -import { action, comparer, computed, IReactionOptions, makeObservable, observable, reaction, runInAction } from "mobx"; +import { action, comparer, computed, makeObservable, observable, reaction, runInAction } from "mobx"; import { autoBind, createStorage } from "../../utils"; import throttle from "lodash/throttle"; @@ -94,7 +94,11 @@ export interface DockTabChangeEvent { prevTab?: DockTab; } -export interface DockTabChangeEventOptions extends IReactionOptions { +export interface DockTabChangeEventOptions { + /** + * apply a callback right after initialization + */ + fireImmediately?: boolean; /** * filter: by dockStore.selectedTab.kind == tabKind */ @@ -195,11 +199,13 @@ export class DockStore implements DockStorageState { if (this.height > this.maxHeight) this.height = this.maxHeight; } - onResize(callback: () => void, options?: IReactionOptions) { - return reaction(() => [this.height, this.fullSize], callback, options); + onResize(callback: () => void, opts: { fireImmediately?: boolean } = {}) { + return reaction(() => [this.height, this.fullSize], callback, { + fireImmediately: opts.fireImmediately, + }); } - onTabClose(callback: (evt: DockTabCloseEvent) => void, options: IReactionOptions = {}) { + onTabClose(callback: (evt: DockTabCloseEvent) => void, opts: { fireImmediately?: boolean } = {}) { return reaction(() => dockStore.tabs.map(tab => tab.id), (tabs: TabId[], prevTabs?: TabId[]) => { if (!Array.isArray(prevTabs)) { return; // tabs not yet modified @@ -214,7 +220,7 @@ export class DockStore implements DockStorageState { } }, { equals: comparer.structural, - ...options, + fireImmediately: opts.fireImmediately, }); } diff --git a/yarn.lock b/yarn.lock index adb7d8ad93..cf9a2cf0c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9535,10 +9535,10 @@ mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.0: dependencies: minimist "^1.2.5" -mobx-observable-history@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mobx-observable-history/-/mobx-observable-history-2.0.1.tgz#bb39f19346e094c3608bbfba4b2b0aca985a562f" - integrity sha512-ijNuz2iBl5SYRdvVIqK3yeRJEGxWS7Oqq14ideNUDAvNZUBk/iCOmzWMgR6vfwp3bYieX/6tANS8N6RjVTKwGg== +mobx-observable-history@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/mobx-observable-history/-/mobx-observable-history-2.0.3.tgz#07dd551e9d2a5666ca1d759ad108173fab47125e" + integrity sha512-cWMG3GcT1l2Y880mfffNh9m6WldQyOtlLUvcdVUjIj++sNOQbRxKBaBUe/TPDiJ80EN6g8FGiVuFlzzyRJPykQ== dependencies: "@types/history" "^4.7.8" history "^4.10.1" @@ -9561,6 +9561,11 @@ mobx@^6.3.0: resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.3.0.tgz#a8fb693c3047bdfcb1eaff9aa48e36a7eb084f96" integrity sha512-Aa1+VXsg4WxqJMTQfWoYuJi5UD10VZhiobSmcs5kcmI3BIT0aVtn7DysvCeDADCzl7dnbX+0BTHUj/v7gLlZpQ== +mobx@^6.3.7: + version "6.3.7" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.3.7.tgz#9ed85561e86da45141134c8fa20cf5f9c7246c3d" + integrity sha512-X7yU7eOEyxIBk4gjIi2UIilwdw48gXh0kcZ5ex3Rc+COJsJmJ4SNpf42uYea3aUqb1hedTv5xzJrq5Q55p0P5g== + mock-fs@^4.14.0: version "4.14.0" resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18"