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

make visitor pattern more explicit for Entity contextMenuOpen

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-05-06 09:21:12 -04:00
parent dd27e46b00
commit 5dee0db95e
5 changed files with 25 additions and 25 deletions

View File

@ -6,11 +6,11 @@ import { getInjectable } from "@ogre-tools/injectable";
import type { CatalogEntity, CatalogEntityContextMenuContext } from "./catalog-entity";
import catalogCategoryRegistryInjectable from "./category-registry.injectable";
export type OnContextMenuOpen = (entity: CatalogEntity, context: CatalogEntityContextMenuContext) => void;
export type VisitEntityContextMenu = (entity: CatalogEntity, context: CatalogEntityContextMenuContext) => void;
const onContextMenuOpenInjectable = getInjectable({
id: "on-context-menu-open",
instantiate: (di): OnContextMenuOpen => {
const visitEntityContextMenuInjectable = getInjectable({
id: "visit-entity-context-menu",
instantiate: (di): VisitEntityContextMenu => {
const categoryRegistry = di.inject(catalogCategoryRegistryInjectable);
return (entity, context) => {
@ -20,4 +20,4 @@ const onContextMenuOpenInjectable = getInjectable({
},
});
export default onContextMenuOpenInjectable;
export default visitEntityContextMenuInjectable;

View File

@ -13,8 +13,8 @@ import { observable } from "mobx";
import { MenuItem } from "../menu";
import { Icon } from "../icon";
import { HotbarToggleMenuItem } from "./hotbar-toggle-menu-item";
import type { OnContextMenuOpen } from "../../../common/catalog/on-context-menu-open.injectable";
import onContextMenuOpenInjectable from "../../../common/catalog/on-context-menu-open.injectable";
import type { VisitEntityContextMenu } from "../../../common/catalog/visit-entity-context-menu.injectable";
import visitEntityContextMenuInjectable from "../../../common/catalog/visit-entity-context-menu.injectable";
import { withInjectables } from "@ogre-tools/injectable-react";
import type { Navigate } from "../../navigation/navigate.injectable";
import navigateInjectable from "../../navigation/navigate.injectable";
@ -28,7 +28,7 @@ export interface CatalogEntityDrawerMenuProps<Entity extends CatalogEntity> exte
interface Dependencies {
normalizeMenuItem: NormalizeCatalogEntityContextMenu;
navigate: Navigate;
onContextMenuOpen: OnContextMenuOpen;
visitEntityContextMenu: VisitEntityContextMenu;
}
@observer
@ -36,7 +36,7 @@ class NonInjectedCatalogEntityDrawerMenu<T extends CatalogEntity> extends React.
private readonly menuItems = observable.array<CatalogEntityContextMenu>();
componentDidMount() {
this.props.onContextMenuOpen(this.props.entity, {
this.props.visitEntityContextMenu(this.props.entity, {
menuItems: this.menuItems,
navigate: this.props.navigate,
});
@ -108,7 +108,7 @@ class NonInjectedCatalogEntityDrawerMenu<T extends CatalogEntity> extends React.
export const CatalogEntityDrawerMenu = withInjectables<Dependencies, CatalogEntityDrawerMenuProps<CatalogEntity>>(NonInjectedCatalogEntityDrawerMenu, {
getProps: (di, props) => ({
...props,
onContextMenuOpen: di.inject(onContextMenuOpenInjectable),
visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable),
navigate: di.inject(navigateInjectable),
}),

View File

@ -41,9 +41,9 @@ import type { AppEvent } from "../../../common/app-event-bus/event-bus";
import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable";
import hotbarStoreInjectable from "../../../common/hotbars/store.injectable";
import type { HotbarStore } from "../../../common/hotbars/store";
import type { OnContextMenuOpen } from "../../../common/catalog/on-context-menu-open.injectable";
import type { VisitEntityContextMenu } from "../../../common/catalog/visit-entity-context-menu.injectable";
import catalogCategoryRegistryInjectable from "../../../common/catalog/category-registry.injectable";
import onContextMenuOpenInjectable from "../../../common/catalog/on-context-menu-open.injectable";
import visitEntityContextMenuInjectable from "../../../common/catalog/visit-entity-context-menu.injectable";
import type { Navigate } from "../../navigation/navigate.injectable";
import navigateInjectable from "../../navigation/navigate.injectable";
import type { NormalizeCatalogEntityContextMenu } from "../../catalog/normalize-menu-item.injectable";
@ -62,7 +62,7 @@ interface Dependencies {
navigateToCatalog: NavigateToCatalog;
hotbarStore: HotbarStore;
catalogCategoryRegistry: CatalogCategoryRegistry;
onContextMenuOpen: OnContextMenuOpen;
visitEntityContextMenu: VisitEntityContextMenu;
navigate: Navigate;
normalizeMenuItem: NormalizeCatalogEntityContextMenu;
}
@ -191,7 +191,7 @@ class NonInjectedCatalog extends React.Component<Dependencies> {
renderItemMenu = (entity: CatalogEntity) => {
const onOpen = () => {
this.menuItems.clear();
this.props.onContextMenuOpen(entity, {
this.props.visitEntityContextMenu(entity, {
menuItems: this.menuItems,
navigate: this.props.navigate,
});
@ -359,7 +359,7 @@ export const Catalog = withInjectables<Dependencies>(NonInjectedCatalog, {
emitEvent: di.inject(appEventBusInjectable).emit,
hotbarStore: di.inject(hotbarStoreInjectable),
catalogCategoryRegistry: di.inject(catalogCategoryRegistryInjectable),
onContextMenuOpen: di.inject(onContextMenuOpenInjectable),
visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
navigate: di.inject(navigateInjectable),
normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable),
}),

View File

@ -16,11 +16,11 @@ import { cssNames } from "../../utils";
import { Icon } from "../icon";
import { HotbarIcon } from "./hotbar-icon";
import { LensKubernetesClusterStatus } from "../../../common/catalog-entities/kubernetes-cluster";
import type { OnContextMenuOpen } from "../../../common/catalog/on-context-menu-open.injectable";
import type { VisitEntityContextMenu } from "../../../common/catalog/visit-entity-context-menu.injectable";
import { navigate } from "../../navigation";
import { withInjectables } from "@ogre-tools/injectable-react";
import catalogCategoryRegistryInjectable from "../../../common/catalog/category-registry.injectable";
import onContextMenuOpenInjectable from "../../../common/catalog/on-context-menu-open.injectable";
import visitEntityContextMenuInjectable from "../../../common/catalog/visit-entity-context-menu.injectable";
import activeEntityInjectable from "../../api/catalog/entity/active.injectable";
export interface HotbarEntityIconProps {
@ -35,7 +35,7 @@ export interface HotbarEntityIconProps {
}
interface Dependencies {
onContextMenuOpen: OnContextMenuOpen;
visitEntityContextMenu: VisitEntityContextMenu;
catalogCategoryRegistry: CatalogCategoryRegistry;
activeEntity: IComputedValue<CatalogEntity | undefined>;
}
@ -84,7 +84,7 @@ class NonInjectedHotbarEntityIcon extends React.Component<HotbarEntityIconProps
onClick: () => this.props.remove(this.props.entity.getId()),
}]);
this.props.onContextMenuOpen(this.props.entity, {
this.props.visitEntityContextMenu(this.props.entity, {
menuItems: this.menuItems,
navigate,
});
@ -124,7 +124,7 @@ export const HotbarEntityIcon = withInjectables<Dependencies, HotbarEntityIconPr
getProps: (di, props) => ({
...props,
catalogCategoryRegistry: di.inject(catalogCategoryRegistryInjectable),
onContextMenuOpen: di.inject(onContextMenuOpenInjectable),
visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
activeEntity: di.inject(activeEntityInjectable),
}),
});

View File

@ -17,8 +17,8 @@ import { withInjectables } from "@ogre-tools/injectable-react";
import hotbarStoreInjectable from "../../../common/hotbars/store.injectable";
import type { HotbarStore } from "../../../common/hotbars/store";
import { observer } from "mobx-react";
import type { OnContextMenuOpen } from "../../../common/catalog/on-context-menu-open.injectable";
import onContextMenuOpenInjectable from "../../../common/catalog/on-context-menu-open.injectable";
import type { VisitEntityContextMenu } from "../../../common/catalog/visit-entity-context-menu.injectable";
import visitEntityContextMenuInjectable from "../../../common/catalog/visit-entity-context-menu.injectable";
import type { Navigate } from "../../navigation/navigate.injectable";
import type { NormalizeCatalogEntityContextMenu } from "../../catalog/normalize-menu-item.injectable";
import navigateInjectable from "../../navigation/navigate.injectable";
@ -32,13 +32,13 @@ interface Dependencies {
navigate: Navigate;
normalizeMenuItem: NormalizeCatalogEntityContextMenu;
hotbarStore: HotbarStore;
onContextMenuOpen: OnContextMenuOpen;
visitEntityContextMenu: VisitEntityContextMenu;
}
const NonInjectedSidebarCluster = observer(({
clusterEntity,
hotbarStore,
onContextMenuOpen,
visitEntityContextMenu: onContextMenuOpen,
navigate,
normalizeMenuItem,
}: Dependencies & SidebarClusterProps) => {
@ -148,7 +148,7 @@ export const SidebarCluster = withInjectables<Dependencies, SidebarClusterProps>
getProps: (di, props) => ({
...props,
hotbarStore: di.inject(hotbarStoreInjectable),
onContextMenuOpen: di.inject(onContextMenuOpenInjectable),
visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
navigate: di.inject(navigateInjectable),
normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable),
}),