mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Demonstrate even step further to have an interface as dependency instead of concrete instance
Signed-off-by: Janne Savolainen <janne.savolainen@houston-inc.com>
This commit is contained in:
parent
91b14ee3fc
commit
29d0634729
@ -32,10 +32,13 @@ export interface KubeObjectMenuRegistration {
|
|||||||
components: KubeObjectMenuComponents;
|
components: KubeObjectMenuComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class KubeObjectMenuRegistry extends BaseRegistry<KubeObjectMenuRegistration> {
|
export interface IHasGettableItemsForKind {
|
||||||
getItemsForKind(kind: string, apiVersion: string) {
|
getItemsForKind(kind: string, apiVersion: string): any;
|
||||||
return this.getItems().filter((item) => {
|
}
|
||||||
return item.kind === kind && item.apiVersions.includes(apiVersion);
|
|
||||||
});
|
export class KubeObjectMenuRegistry extends BaseRegistry<KubeObjectMenuRegistration> implements IHasGettableItemsForKind {
|
||||||
}
|
getItemsForKind = (kind: string, apiVersion: string) =>
|
||||||
|
this.getItems().filter((item) =>
|
||||||
|
item.kind === kind && item.apiVersions.includes(apiVersion),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,10 @@ import type { KubeObject } from "../../../common/k8s-api/kube-object";
|
|||||||
import { MenuActions, MenuActionsProps } from "../menu/menu-actions";
|
import { MenuActions, MenuActionsProps } from "../menu/menu-actions";
|
||||||
import identity from "lodash/identity";
|
import identity from "lodash/identity";
|
||||||
|
|
||||||
import type { KubeObjectMenuRegistry } from "../../../extensions/registries";
|
import type {
|
||||||
|
IHasGettableItemsForKind,
|
||||||
|
} from "../../../extensions/registries";
|
||||||
|
|
||||||
import type { CatalogEntityRegistry } from "../../api/catalog-entity-registry";
|
import type { CatalogEntityRegistry } from "../../api/catalog-entity-registry";
|
||||||
import type { IGettableStore } from "../../../common/k8s-api/api-manager";
|
import type { IGettableStore } from "../../../common/k8s-api/api-manager";
|
||||||
|
|
||||||
@ -38,10 +41,10 @@ export interface KubeObjectMenuProps<T> extends MenuActionsProps {
|
|||||||
|
|
||||||
interface KubeObjectMenuDependencies<T> extends KubeObjectMenuProps<T>{
|
interface KubeObjectMenuDependencies<T> extends KubeObjectMenuProps<T>{
|
||||||
apiManager: IGettableStore,
|
apiManager: IGettableStore,
|
||||||
|
kubeObjectMenuRegistry: IHasGettableItemsForKind
|
||||||
hideDetails: Function,
|
hideDetails: Function,
|
||||||
editResourceTab: Function,
|
editResourceTab: Function,
|
||||||
catalogEntityRegistry: CatalogEntityRegistry,
|
catalogEntityRegistry: CatalogEntityRegistry,
|
||||||
kubeObjectMenuRegistry: KubeObjectMenuRegistry
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class KubeObjectMenu<T extends KubeObject> extends React.Component<KubeObjectMenuDependencies<T>> {
|
export class KubeObjectMenu<T extends KubeObject> extends React.Component<KubeObjectMenuDependencies<T>> {
|
||||||
@ -125,11 +128,13 @@ export class KubeObjectMenu<T extends KubeObject> extends React.Component<KubeOb
|
|||||||
|
|
||||||
return this.dependencies.kubeObjectMenuRegistry
|
return this.dependencies.kubeObjectMenuRegistry
|
||||||
.getItemsForKind(object.kind, object.apiVersion)
|
.getItemsForKind(object.kind, object.apiVersion)
|
||||||
.map(({ components: { MenuItem }}, index) => (
|
.map(({ components: { MenuItem }}: { components: { MenuItem: React.ReactType<any> }}, index: number) => (
|
||||||
<MenuItem
|
<MenuItem
|
||||||
object={object}
|
object={object}
|
||||||
key={`menu-item-${index}`}
|
|
||||||
toolbar={toolbar}
|
toolbar={toolbar}
|
||||||
|
|
||||||
|
// TODO: Fix misuse of index in key
|
||||||
|
key={`menu-item-${index}`}
|
||||||
/>
|
/>
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user