From 97ad405f9f9b92b7e0062bef32a3b4422fc9d647 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 14 May 2021 22:29:39 +0300 Subject: [PATCH] clean up / responding to comments Signed-off-by: Roman --- src/extensions/extension-loader.ts | 27 ++++++++++++++------------- src/renderer/api/kube-object.ts | 4 ++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/extensions/extension-loader.ts b/src/extensions/extension-loader.ts index 41546d6cdf..095fb75cbb 100644 --- a/src/extensions/extension-loader.ts +++ b/src/extensions/extension-loader.ts @@ -22,7 +22,7 @@ import { app, ipcRenderer, remote } from "electron"; import { EventEmitter } from "events"; import { isEqual } from "lodash"; -import { action, computed, observable, reaction, when, makeObservable } from "mobx"; +import { action, computed, makeObservable, observable, reaction, when } from "mobx"; import path from "path"; import { getHostedCluster } from "../common/cluster-store"; import { broadcastMessage, handleRequest, requestMain, subscribeToBroadcast } from "../common/ipc"; @@ -126,6 +126,11 @@ export class ExtensionLoader extends Singleton { await Promise.all([this.whenLoaded, ExtensionsStore.getInstance().whenLoaded]); + // broadcasting extensions between main/renderer processes + reaction(() => this.toJSON(), () => this.broadcastExtensions(), { + fireImmediately: true, + }); + // save state on change `extension.isEnabled` reaction(() => this.storeState, extensionsState => { ExtensionsStore.getInstance().mergeState(extensionsState); @@ -169,10 +174,6 @@ export class ExtensionLoader extends Singleton { this.isLoaded = true; this.loadOnMain(); - reaction(() => this.toJSON(), () => { - this.broadcastExtensions(ExtensionLoader.extensionsMainChannel); - }); - handleRequest(ExtensionLoader.extensionsMainChannel, () => { return Array.from(this.toJSON()); }); @@ -197,16 +198,20 @@ export class ExtensionLoader extends Singleton { }); }; - reaction(() => this.toJSON(), () => { - this.broadcastExtensions(ExtensionLoader.extensionsRendererChannel); - }); - requestMain(ExtensionLoader.extensionsMainChannel).then(extensionListHandler); subscribeToBroadcast(ExtensionLoader.extensionsMainChannel, (_event, extensions: [LensExtensionId, InstalledExtension][]) => { extensionListHandler(extensions); }); } + broadcastExtensions() { + const channel = ipcRenderer + ? ExtensionLoader.extensionsRendererChannel + : ExtensionLoader.extensionsMainChannel; + + broadcastMessage(channel, Array.from(this.extensions)); + } + syncExtensions(extensions: [LensExtensionId, InstalledExtension][]) { extensions.forEach(([lensExtensionId, extension]) => { if (!isEqual(this.extensions.get(lensExtensionId), extension)) { @@ -343,8 +348,4 @@ export class ExtensionLoader extends Singleton { toJSON(): Map { return toJS(this.extensions); } - - broadcastExtensions(channel = ExtensionLoader.extensionsMainChannel) { - broadcastMessage(channel, Array.from(this.extensions)); - } } diff --git a/src/renderer/api/kube-object.ts b/src/renderer/api/kube-object.ts index 63ebb207d9..9e10cc9013 100644 --- a/src/renderer/api/kube-object.ts +++ b/src/renderer/api/kube-object.ts @@ -87,7 +87,7 @@ export class KubeStatus { export type IKubeMetaField = keyof IKubeObjectMetadata; -export class KubeObject implements ItemObject { +export class KubeObject implements ItemObject { static readonly kind: string; static readonly namespaced: boolean; @@ -95,7 +95,7 @@ export class KubeObject