diff --git a/package.json b/package.json index bb82612ea2..486902d6ef 100644 --- a/package.json +++ b/package.json @@ -218,7 +218,7 @@ "mac-ca": "^1.0.4", "marked": "^1.2.7", "md5-file": "^5.0.0", - "mobx": "^5.15.7", + "mobx": "^6.2.0", "mobx-observable-history": "^1.0.3", "mobx-react": "^6.2.2", "mock-fs": "^4.12.0", diff --git a/src/common/cluster-store.ts b/src/common/cluster-store.ts index d1f11d8372..0a459a96c8 100644 --- a/src/common/cluster-store.ts +++ b/src/common/cluster-store.ts @@ -295,7 +295,7 @@ export class ClusterStore extends BaseStore { @action protected fromStore({ activeCluster, clusters = [] }: ClusterStoreModel = {}) { - const currentClusters = this.clusters.toJS(); + const currentClusters = toJS(this.clusters); const newClusters = new Map(); const removedClusters = new Map(); diff --git a/src/extensions/extension-loader.ts b/src/extensions/extension-loader.ts index d36123b95a..bc4b5e6407 100644 --- a/src/extensions/extension-loader.ts +++ b/src/extensions/extension-loader.ts @@ -41,7 +41,7 @@ export class ExtensionLoader { whenLoaded = when(() => this.isLoaded); @computed get userExtensions(): Map { - const extensions = this.extensions.toJS(); + const extensions = toJS(this.extensions); extensions.forEach((ext, extId) => { if (ext.isBundled) { @@ -55,7 +55,7 @@ export class ExtensionLoader { @computed get userExtensionsByName(): Map { const extensions = new Map(); - for (const [, val] of this.instances.toJS()) { + for (const [, val] of toJS(this.instances)) { if (val.isBundled) { continue; } diff --git a/src/renderer/components/+apps-releases/release-details.tsx b/src/renderer/components/+apps-releases/release-details.tsx index e139569937..d28ded12eb 100644 --- a/src/renderer/components/+apps-releases/release-details.tsx +++ b/src/renderer/components/+apps-releases/release-details.tsx @@ -3,7 +3,7 @@ import "./release-details.scss"; import React, { Component } from "react"; import groupBy from "lodash/groupBy"; import isEqual from "lodash/isEqual"; -import { observable, reaction } from "mobx"; +import { observable, reaction, toJS } from "mobx"; import { Link } from "react-router-dom"; import kebabCase from "lodash/kebabCase"; import { HelmRelease, helmReleasesApi, IReleaseDetails } from "../../api/endpoints/helm-releases.api"; @@ -48,7 +48,7 @@ export class ReleaseDetails extends Component { ); @disposeOnUnmount - secretWatcher = reaction(() => secretsStore.items.toJS(), () => { + secretWatcher = reaction(() => toJS(secretsStore.items), () => { if (!this.props.release) return; const { getReleaseSecret } = releaseStore; const { release } = this.props; diff --git a/src/renderer/components/+apps-releases/release.store.ts b/src/renderer/components/+apps-releases/release.store.ts index 59e8d9a5bc..fb8a2d907e 100644 --- a/src/renderer/components/+apps-releases/release.store.ts +++ b/src/renderer/components/+apps-releases/release.store.ts @@ -1,5 +1,5 @@ import isEqual from "lodash/isEqual"; -import { action, IReactionDisposer, observable, reaction, when } from "mobx"; +import { action, IReactionDisposer, observable, reaction, toJS, when } from "mobx"; import { autobind } from "../../utils"; import { HelmRelease, helmReleasesApi, IReleaseCreatePayload, IReleaseUpdatePayload } from "../../api/endpoints/helm-releases.api"; import { ItemStore } from "../../item.store"; @@ -21,7 +21,7 @@ export class ReleaseStore extends ItemStore { } watch() { - this.secretWatcher = reaction(() => secretsStore.items.toJS(), () => { + this.secretWatcher = reaction(() => toJS(secretsStore.items), () => { if (this.isLoading) return; const secrets = this.getReleaseSecrets(); const amountChanged = secrets.length !== this.releaseSecrets.length; diff --git a/src/renderer/components/+custom-resources/crd.store.ts b/src/renderer/components/+custom-resources/crd.store.ts index 64aefc1fe1..86af0b9a6b 100644 --- a/src/renderer/components/+custom-resources/crd.store.ts +++ b/src/renderer/components/+custom-resources/crd.store.ts @@ -1,4 +1,4 @@ -import { computed, reaction } from "mobx"; +import { computed, reaction, toJS } from "mobx"; import { KubeObjectStore } from "../../kube-object.store"; import { autobind } from "../../utils"; import { crdApi, CustomResourceDefinition } from "../../api/endpoints/crd.api"; @@ -12,7 +12,7 @@ function initStore(crd: CustomResourceDefinition) { const kind = crd.getResourceKind(); const isNamespaced = crd.isNamespaced(); const api = apiManager.getApi(apiBase) || new KubeApi({ apiBase, kind, isNamespaced }); - + if (!apiManager.getStore(api)) { apiManager.registerStore(new CRDResourceStore(api)); } @@ -26,7 +26,7 @@ export class CRDStore extends KubeObjectStore { super(); // auto-init stores for crd-s - reaction(() => this.items.toJS(), items => items.forEach(initStore)); + reaction(() => toJS(this.items), items => items.forEach(initStore)); } protected sortItems(items: CustomResourceDefinition[]) { @@ -60,7 +60,7 @@ export class CRDStore extends KubeObjectStore { getByObject(obj: KubeObject) { if (!obj) return null; const { kind, apiVersion } = obj; - + return this.items.find(crd => ( kind === crd.getResourceKind() && apiVersion === `${crd.getGroup()}/${crd.getVersion()}` )); diff --git a/src/renderer/hooks/useStorage.ts b/src/renderer/hooks/useStorage.ts index febda7edb5..003b63bf86 100644 --- a/src/renderer/hooks/useStorage.ts +++ b/src/renderer/hooks/useStorage.ts @@ -1,6 +1,6 @@ import { useState } from "react"; import { createStorage } from "../utils"; -import { CreateObservableOptions } from "mobx/lib/api/observable"; +import { CreateObservableOptions } from "mobx"; export function useStorage(key: string, initialValue: T, options?: CreateObservableOptions) { const storage = createStorage(key, initialValue, options); diff --git a/src/renderer/item.store.ts b/src/renderer/item.store.ts index a9ac3179c9..5c6d04b278 100644 --- a/src/renderer/item.store.ts +++ b/src/renderer/item.store.ts @@ -1,6 +1,6 @@ import orderBy from "lodash/orderBy"; import { autobind, noop } from "./utils"; -import { action, computed, observable, when } from "mobx"; +import { action, computed, observable, toJS, when } from "mobx"; export interface ItemObject { getId(): string; @@ -23,7 +23,7 @@ export abstract class ItemStore { } public getItems(): T[] { - return this.items.toJS(); + return toJS(this.items); } public getTotalCount(): number { diff --git a/src/renderer/utils/__tests__/storageHelper.test.ts b/src/renderer/utils/__tests__/storageHelper.test.ts index bf0f19f114..82215642bb 100644 --- a/src/renderer/utils/__tests__/storageHelper.test.ts +++ b/src/renderer/utils/__tests__/storageHelper.test.ts @@ -1,4 +1,4 @@ -import { reaction } from "mobx"; +import { reaction, toJS } from "mobx"; import { StorageAdapter, StorageHelper } from "../storageHelper"; import { delay } from "../../../common/utils/delay"; @@ -166,7 +166,7 @@ describe("renderer/utils/StorageHelper", () => { it("storage.get() is observable", () => { expect(storageHelper.get()).toEqual(defaultValue); - reaction(() => storageHelper.toJS(), change => { + reaction(() => toJS(storageHelper), change => { observedChanges.push(change); }); diff --git a/src/renderer/utils/createStorage.ts b/src/renderer/utils/createStorage.ts index 2caa3736a4..b9d08b5af6 100755 --- a/src/renderer/utils/createStorage.ts +++ b/src/renderer/utils/createStorage.ts @@ -1,6 +1,6 @@ // Keeps window.localStorage state in external JSON-files. // Because app creates random port between restarts => storage session wiped out each time. -import type { CreateObservableOptions } from "mobx/lib/api/observable"; +import type { CreateObservableOptions } from "mobx"; import path from "path"; import { app, remote } from "electron"; diff --git a/src/renderer/utils/storageHelper.ts b/src/renderer/utils/storageHelper.ts index 2b2b14464a..bfcc1b1da7 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 type { CreateObservableOptions } from "mobx/lib/api/observable"; +import type { CreateObservableOptions } from "mobx"; import { action, comparer, observable, toJS, when } from "mobx"; import produce, { Draft, enableMapSet, setAutoFreeze } from "immer"; import { isEqual, isFunction, isPlainObject } from "lodash"; diff --git a/yarn.lock b/yarn.lock index dc2b2715bc..ab234d7c5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9512,10 +9512,10 @@ mobx@^5.15.4: resolved "https://registry.yarnpkg.com/mobx/-/mobx-5.15.4.tgz#9da1a84e97ba624622f4e55a0bf3300fb931c2ab" integrity sha512-xRFJxSU2Im3nrGCdjSuOTFmxVDGeqOHL+TyADCGbT0k4HHqGmx5u2yaHNryvoORpI4DfbzjJ5jPmuv+d7sioFw== -mobx@^5.15.7: - version "5.15.7" - resolved "https://registry.yarnpkg.com/mobx/-/mobx-5.15.7.tgz#b9a5f2b6251f5d96980d13c78e9b5d8d4ce22665" - integrity sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw== +mobx@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.2.0.tgz#9a5afe3525a0302691c7805d0df6ef60834d79e5" + integrity sha512-j5f16JIq2v4flvYCqaAB9tMtJt/y5efR2OO5Xy+w4/MBMeQ1WeGR0T8BtiNgmxM/OQzPFUKb5DTex9Y8a/yk+g== mock-fs@^4.12.0: version "4.12.0"