diff --git a/src/renderer/components/+apps-releases/release.store.ts b/src/renderer/components/+apps-releases/release.store.ts index 7222fd2aa4..6f7ed39fed 100644 --- a/src/renderer/components/+apps-releases/release.store.ts +++ b/src/renderer/components/+apps-releases/release.store.ts @@ -60,12 +60,11 @@ export class ReleaseStore extends ItemStore { @action async loadAll() { this.isLoading = true; - let items: HelmRelease[]; try { - items = await this.loadItems(namespaceStore.getContextNamespaces()); - items = this.sortItems(items); - this.items.replace(items); + const items = await this.loadItems(namespaceStore.getContextNamespaces()); + + this.items.replace(this.sortItems(items)); this.isLoaded = true; } catch (error) { console.error(`Loading Helm Chart releases has failed: ${error}`); diff --git a/src/renderer/components/+namespaces/namespace.store.ts b/src/renderer/components/+namespaces/namespace.store.ts index 1001163fc0..4818cc3fde 100644 --- a/src/renderer/components/+namespaces/namespace.store.ts +++ b/src/renderer/components/+namespaces/namespace.store.ts @@ -18,6 +18,19 @@ export const namespaceUrlParam = createPageParam({ } }); +export function getDummyNamespace(name: string) { + return new Namespace({ + kind: Namespace.kind, + apiVersion: "v1", + metadata: { + name, + uid: "", + resourceVersion: "", + selfLink: `/api/v1/namespaces/${name}` + } + }); +} + @autobind() export class NamespaceStore extends KubeObjectStore { api = namespacesApi; @@ -59,7 +72,7 @@ export class NamespaceStore extends KubeObjectStore { equals: comparer.identity, }) ); - + // auto-load allowed namespaces disposers.push( reaction(() => this.allowedNamespaces, () => this.loadAll(), { @@ -112,15 +125,6 @@ export class NamespaceStore extends KubeObjectStore { return namespaces; } - /** - * @deprecated - */ - getContextParams() { - return { - namespaces: this.getContextNamespaces(), - }; - } - subscribe(apis = [this.api]) { const { accessibleNamespaces } = getHostedCluster(); @@ -144,25 +148,12 @@ export class NamespaceStore extends KubeObjectStore { } if (!isAllowedResource("namespaces")) { - return namespaces.map(this.getDummyNamespace); + return namespaces.map(getDummyNamespace); } return Promise.all(namespaces.map(name => this.api.get({ name }))); } - protected getDummyNamespace(name: string) { - return new Namespace({ - kind: "Namespace", - apiVersion: "v1", - metadata: { - name, - uid: "", - resourceVersion: "", - selfLink: `/api/v1/namespaces/${name}` - } - }); - } - @action setContext(namespaces: string[]) { this.contextNs.replace(namespaces); diff --git a/src/renderer/components/+workloads-overview/overview.tsx b/src/renderer/components/+workloads-overview/overview.tsx index a77e2d0d4e..4e474bf313 100644 --- a/src/renderer/components/+workloads-overview/overview.tsx +++ b/src/renderer/components/+workloads-overview/overview.tsx @@ -39,9 +39,7 @@ export class WorkloadsOverview extends React.Component { isAllowedResource("events") && eventStore, ].filter(Boolean); - const unsubscribeMap = new Map( - stores.map(store => [store, Function]) - ); + const unsubscribeMap = new Map void>(); const loadStores = async () => { this.isLoading = true; @@ -52,7 +50,7 @@ export class WorkloadsOverview extends React.Component { try { store.reset(); await store.loadAll(); - unsubscribeMap.get(store)(); // unsubscribe previous watcher + unsubscribeMap.get(store)?.(); // unsubscribe previous watcher unsubscribeMap.set(store, store.subscribe()); } catch (error) { console.error("loading store error", error); diff --git a/src/renderer/components/item-object-list/item-list-layout.tsx b/src/renderer/components/item-object-list/item-list-layout.tsx index e4f7da237c..58e663df8d 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -2,7 +2,7 @@ import "./item-list-layout.scss"; import groupBy from "lodash/groupBy"; import React, { ReactNode } from "react"; -import { computed, IReactionDisposer, observable, reaction, toJS, when } from "mobx"; +import { computed, IReactionDisposer, observable, reaction, toJS } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { ConfirmDialog, ConfirmDialogParams } from "../confirm-dialog"; import { Table, TableCell, TableCellProps, TableHead, TableProps, TableRow, TableRowProps, TableSortCallback } from "../table"; @@ -92,7 +92,6 @@ export class ItemListLayout extends React.Component { private watchDisposers: IReactionDisposer[] = []; - @observable isLoaded = false; @observable isUnmounting = false; @observable userSettings: ItemListLayoutUserSettings = { @@ -122,7 +121,6 @@ export class ItemListLayout extends React.Component { async componentWillUnmount() { this.isUnmounting = true; - await when(() => this.isLoaded); this.unsubscribeStores(); } @@ -135,12 +133,14 @@ export class ItemListLayout extends React.Component { } // reset - this.isLoaded = false; this.unsubscribeStores(); // load for (const store of stores) { - if (this.isUnmounting) break; + if (this.isUnmounting) { + this.unsubscribeStores(); + break; + } try { store.reset(); @@ -150,7 +150,6 @@ export class ItemListLayout extends React.Component { console.error("loading store error", error); } } - this.isLoaded = true; } unsubscribeStores() {