diff --git a/src/renderer/api/kube-api.ts b/src/renderer/api/kube-api.ts index 0b3233ae1d..0be497a8f1 100644 --- a/src/renderer/api/kube-api.ts +++ b/src/renderer/api/kube-api.ts @@ -11,7 +11,7 @@ import { KubeJsonApi, KubeJsonApiData, KubeJsonApiDataList } from "./kube-json-a import { IKubeObjectConstructor, KubeObject } from "./kube-object"; import byline from "byline"; import { ReadableWebToNodeStream } from "readable-web-to-node-stream"; -import { IKubeWatchEvent, IKubeWatchMessage } from "./kube-watch-api"; +import { IKubeWatchEvent } from "./kube-watch-api"; export interface IKubeApiOptions { /** @@ -399,10 +399,12 @@ export class KubeApi { stream.on("data", (line) => { try { - const data: IKubeWatchEvent = JSON.parse(line); + const event: IKubeWatchEvent = JSON.parse(line); + + this.modifyWatchEvent(event); if (callback) { - callback(data); + callback(event); } } catch (ignore) { // ignore parse errors @@ -429,32 +431,23 @@ export class KubeApi { return disposer; } - protected generateMessage(event: IKubeWatchEvent): IKubeWatchMessage { - const message: IKubeWatchMessage = {}; + protected modifyWatchEvent(event: IKubeWatchEvent) { switch (event.type) { case "ADDED": case "DELETED": case "MODIFIED": { - const data = event as IKubeWatchEvent; + ensureObjectSelfLink(this, event.object); - message.data = data; - - ensureObjectSelfLink(this, data.object); - - const { namespace, resourceVersion } = data.object.metadata; + const { namespace, resourceVersion } = event.object.metadata; this.setResourceVersion(namespace, resourceVersion); this.setResourceVersion("", resourceVersion); - message.api = this; - message.namespace = namespace; break; } } - - return message; } } diff --git a/src/renderer/api/kube-watch-api.ts b/src/renderer/api/kube-watch-api.ts index 5d1c045603..5523c5c5a9 100644 --- a/src/renderer/api/kube-watch-api.ts +++ b/src/renderer/api/kube-watch-api.ts @@ -1,7 +1,6 @@ // Kubernetes watch-api client // API: https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams -import type { KubeObject } from "./kube-object"; import type { KubeObjectStore } from "../kube-object.store"; import type { ClusterContext } from "../components/context"; @@ -9,7 +8,7 @@ import plimit from "p-limit"; import { comparer, IReactionDisposer, observable, reaction, when } from "mobx"; import { autobind, noop } from "../utils"; import { KubeApi } from "./kube-api"; -import { KubeJsonApiData, KubeJsonApiError } from "./kube-json-api"; +import { KubeJsonApiData } from "./kube-json-api"; import { isDebugging, isProduction } from "../../common/vars"; export interface IKubeWatchEvent { @@ -17,14 +16,6 @@ export interface IKubeWatchEvent { object?: T; } -export interface IKubeWatchMessage { - namespace?: string; - data?: IKubeWatchEvent - error?: IKubeWatchEvent; - api?: KubeApi; - store?: KubeObjectStore; -} - export interface IKubeWatchSubscribeStoreOptions { namespaces?: string[]; // default: all accessible namespaces preload?: boolean; // preload store items, default: true