1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Merge branch 'fix-1898/watch-api-streaming' into fix/store.loadAll

# Conflicts:
#	src/renderer/api/kube-watch-api.ts
This commit is contained in:
Roman 2021-01-28 19:20:33 +02:00
commit 219852dce1

View File

@ -116,7 +116,7 @@ export class KubeWatchApi {
} }
isAllowedApi(api: KubeApi): boolean { isAllowedApi(api: KubeApi): boolean {
return !!this.cluster?.isAllowedResource(api.kind); return !!this?.cluster?.isAllowedResource(api.kind);
} }
subscribeApi(api: KubeApi | KubeApi[]): () => void { subscribeApi(api: KubeApi | KubeApi[]): () => void {
@ -142,8 +142,14 @@ export class KubeWatchApi {
const limitRequests = plimit(1); // load stores one by one to allow quick skipping when fast clicking btw pages const limitRequests = plimit(1); // load stores one by one to allow quick skipping when fast clicking btw pages
const preloading: Promise<any>[] = []; const preloading: Promise<any>[] = [];
const apis = new Set(stores.map(store => store.getSubscribeApis()).flat()); const apis = new Set(stores.map(store => store.getSubscribeApis()).flat());
const unsubscribeList: (() => void)[] = [];
let isUnsubscribed = false; let isUnsubscribed = false;
const subscribe = () => {
if (isUnsubscribed) return;
apis.forEach(api => unsubscribeList.push(this.subscribeApi(api)));
};
if (preload) { if (preload) {
for (const store of stores) { for (const store of stores) {
preloading.push(limitRequests(async () => { preloading.push(limitRequests(async () => {
@ -154,23 +160,15 @@ export class KubeWatchApi {
} }
} }
const subscribe = () => {
const unsubscribeList: (() => void)[] = [];
const subscribeApis = () => {
if (isUnsubscribed) return;
apis.forEach(api => unsubscribeList.push(this.subscribeApi(api)));
};
if (waitUntilLoaded) { if (waitUntilLoaded) {
Promise.all(preloading).then(subscribeApis, error => { Promise.all(preloading).then(subscribe, error => {
this.log({ this.log({
message: new Error("Loading stores has failed"), message: new Error("Loading stores has failed"),
meta: { stores, error, options }, meta: { stores, error, options },
}); });
}); });
} else { } else {
subscribeApis(); subscribe();
} }
// unsubscribe // unsubscribe
@ -180,9 +178,6 @@ export class KubeWatchApi {
limitRequests.clearQueue(); limitRequests.clearQueue();
unsubscribeList.forEach(unsubscribe => unsubscribe()); unsubscribeList.forEach(unsubscribe => unsubscribe());
}; };
};
return subscribe();
} }
protected async connectionCheck() { protected async connectionCheck() {