From 2aa615a183ac02a27c672156e4817ac199b39d93 Mon Sep 17 00:00:00 2001 From: MrWindlike Date: Wed, 20 Mar 2024 17:10:21 +0800 Subject: [PATCH 1/2] fix: make sure notify is called after store.set --- src/global-store.ts | 11 ++++++----- src/kube-api.ts | 13 ++++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/global-store.ts b/src/global-store.ts index afb517c..37ae2a3 100644 --- a/src/global-store.ts +++ b/src/global-store.ts @@ -97,17 +97,18 @@ export class GlobalStore { let resolved = false; kubeApi .listWatch({ - onResponse: async res => { + onResponse: async (res, event) => { const processedRes = await this.processList(res); if (!resolved) { resolve(processedRes as unknown as T); resolved = true; } this.store.set(resource, processedRes); - }, - onEvent: async event => { - await this.processItem(event.object); - this.notify(resource, event); + + if (event) { + await this.processItem(event.object); + this.notify(resource, event); + } }, signal, }) diff --git a/src/kube-api.ts b/src/kube-api.ts index 131f710..4ba7388 100644 --- a/src/kube-api.ts +++ b/src/kube-api.ts @@ -65,7 +65,7 @@ type KubeApiListOptions = { }; type KubeApiListWatchOptions = KubeApiListOptions & { - onResponse?: (response: T) => void; + onResponse?: (response: T, event?: WatchEvent) => void; onEvent?: (event: WatchEvent) => void; signal?: AbortSignal; }; @@ -379,10 +379,13 @@ export class KubeApi { break; default: } - onResponse?.({ - ...response, - items, - }); + onResponse?.( + { + ...response, + items, + }, + event + ); onEvent?.(event); }; From 86d2c6ca85444f9f49422ba9ca176c18c4f41f65 Mon Sep 17 00:00:00 2001 From: MrWindlike Date: Wed, 20 Mar 2024 17:54:00 +0800 Subject: [PATCH 2/2] 0.0.19 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a08c6fe..6c2ce86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "k8s-api-provider", - "version": "0.0.18", + "version": "0.0.19", "description": "K8s ui data provider", "main": "lib/index.js", "module": "lib/index.js",