1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2021-01-28 19:18:08 +02:00
parent bbf9b7af32
commit fbfe5673a7

View File

@ -108,7 +108,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 {
@ -134,8 +134,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 () => {
@ -146,23 +152,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
@ -172,9 +170,6 @@ export class KubeWatchApi {
limitRequests.clearQueue(); limitRequests.clearQueue();
unsubscribeList.forEach(unsubscribe => unsubscribe()); unsubscribeList.forEach(unsubscribe => unsubscribe());
}; };
};
return subscribe();
} }
protected async connectionCheck() { protected async connectionCheck() {