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

Fix CRDs not updating in Sidebar (#4288)

This commit is contained in:
Sebastian Malton 2021-11-12 08:51:14 -05:00 committed by GitHub
parent 333d77f66a
commit 673f20fb74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 10 deletions

View File

@ -92,6 +92,8 @@ export class CrdList extends React.Component {
tableId="crd"
className="CrdList"
store={crdStore}
// Don't subscribe the `crdStore` because <Sidebar> already has and is always mounted
subscribeStores={false}
items={items}
sortingCallbacks={sortingCallbacks}
searchFilters={Object.values(sortingCallbacks)}

View File

@ -36,10 +36,12 @@ import { kubeSelectedUrlParam, toggleDetails } from "../kube-detail-params";
export interface KubeObjectListLayoutProps<K extends KubeObject> extends ItemListLayoutProps<K> {
store: KubeObjectStore<K>;
dependentStores?: KubeObjectStore<KubeObject>[];
subscribeStores?: boolean;
}
const defaultProps: Partial<KubeObjectListLayoutProps<KubeObject>> = {
onDetails: (item: KubeObject) => toggleDetails(item.selfLink),
subscribeStores: true,
};
@observer
@ -56,9 +58,10 @@ export class KubeObjectListLayout<K extends KubeObject> extends React.Component<
}
componentDidMount() {
const { store, dependentStores = [] } = this.props;
const { store, dependentStores = [], subscribeStores } = this.props;
const stores = Array.from(new Set([store, ...dependentStores]));
if (subscribeStores) {
disposeOnUnmount(this, [
kubeWatchApi.subscribeStores(stores, {
preload: true,
@ -66,6 +69,7 @@ export class KubeObjectListLayout<K extends KubeObject> extends React.Component<
}),
]);
}
}
render() {
const { className, customizeHeader, store, items = store.contextItems, ...layoutProps } = this.props;

View File

@ -23,7 +23,7 @@ import styles from "./sidebar.module.css";
import type { TabLayoutRoute } from "./tab-layout";
import React from "react";
import { observer } from "mobx-react";
import { disposeOnUnmount, observer } from "mobx-react";
import { cssNames } from "../../utils";
import { Icon } from "../icon";
import { Workloads } from "../+workloads";
@ -42,6 +42,7 @@ import * as routes from "../../../common/routes";
import { Config } from "../+config";
import { catalogEntityRegistry } from "../../api/catalog-entity-registry";
import { SidebarCluster } from "./sidebar-cluster";
import { kubeWatchApi } from "../../../common/k8s-api/kube-watch-api";
interface Props {
className?: string;
@ -51,8 +52,10 @@ interface Props {
export class Sidebar extends React.Component<Props> {
static displayName = "Sidebar";
async componentDidMount() {
crdStore.reloadAll();
componentDidMount() {
disposeOnUnmount(this, [
kubeWatchApi.subscribeStores([crdStore]),
]);
}
renderCustomResources() {