diff --git a/src/renderer/api/catalog-entity-registry.ts b/src/renderer/api/catalog-entity-registry.ts index 7b09ff273b..d731e2562a 100644 --- a/src/renderer/api/catalog-entity-registry.ts +++ b/src/renderer/api/catalog-entity-registry.ts @@ -31,7 +31,7 @@ import { once } from "lodash"; export type EntityFilter = (entity: CatalogEntity) => any; export class CatalogEntityRegistry { - @observable.ref activeEntity: CatalogEntity; + @observable protected activeEntityId: string | undefined = undefined; protected _entities = observable.map([], { deep: true }); protected filters = observable.set([], { deep: false, @@ -46,6 +46,22 @@ export class CatalogEntityRegistry { makeObservable(this); } + get activeEntity(): CatalogEntity | null { + return this._entities.get(this.activeEntityId) || null; + } + + set activeEntity(raw: CatalogEntity | string | null) { + if (raw) { + const id = typeof raw === "string" + ? raw + : raw.getId(); + + this.activeEntityId = id; + } else { + this.activeEntityId = undefined; + } + } + init() { ipcRendererOn("catalog:items", (event, items: (CatalogEntityData & CatalogEntityKindData)[]) => { this.updateItems(items); diff --git a/src/renderer/components/app.tsx b/src/renderer/components/app.tsx index 3f8dbf7d8b..c7d60f3b4f 100755 --- a/src/renderer/components/app.tsx +++ b/src/renderer/components/app.tsx @@ -19,7 +19,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ import React from "react"; -import { observable, makeObservable, reaction } from "mobx"; +import { observable, makeObservable } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { Redirect, Route, Router, Switch } from "react-router"; import { history } from "../navigation"; @@ -97,13 +97,7 @@ export class App extends React.Component { await cluster.whenReady; // cluster.activate() is done at this point - const activeEntityDisposer = reaction(() => catalogEntityRegistry.getById(App.clusterId), (entity) => { - if (!entity) { - return; - } - catalogEntityRegistry.activeEntity = entity; - activeEntityDisposer(); - }, {fireImmediately: true}); + catalogEntityRegistry.activeEntity = App.clusterId; ExtensionLoader.getInstance().loadOnClusterRenderer(); setTimeout(() => {