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 type { CatalogEntity, CatalogEntityContextMenuContext } from "./catalog-entity";
import catalogCategoryRegistryInjectable from "./category-registry.injectable"; 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({ const visitEntityContextMenuInjectable = getInjectable({
id: "on-context-menu-open", id: "visit-entity-context-menu",
instantiate: (di): OnContextMenuOpen => { instantiate: (di): VisitEntityContextMenu => {
const categoryRegistry = di.inject(catalogCategoryRegistryInjectable); const categoryRegistry = di.inject(catalogCategoryRegistryInjectable);
return (entity, context) => { 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 { MenuItem } from "../menu";
import { Icon } from "../icon"; import { Icon } from "../icon";
import { HotbarToggleMenuItem } from "./hotbar-toggle-menu-item"; import { HotbarToggleMenuItem } from "./hotbar-toggle-menu-item";
import type { OnContextMenuOpen } from "../../../common/catalog/on-context-menu-open.injectable"; import type { VisitEntityContextMenu } from "../../../common/catalog/visit-entity-context-menu.injectable";
import onContextMenuOpenInjectable from "../../../common/catalog/on-context-menu-open.injectable"; import visitEntityContextMenuInjectable from "../../../common/catalog/visit-entity-context-menu.injectable";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import type { Navigate } from "../../navigation/navigate.injectable"; import type { Navigate } from "../../navigation/navigate.injectable";
import navigateInjectable from "../../navigation/navigate.injectable"; import navigateInjectable from "../../navigation/navigate.injectable";
@ -28,7 +28,7 @@ export interface CatalogEntityDrawerMenuProps<Entity extends CatalogEntity> exte
interface Dependencies { interface Dependencies {
normalizeMenuItem: NormalizeCatalogEntityContextMenu; normalizeMenuItem: NormalizeCatalogEntityContextMenu;
navigate: Navigate; navigate: Navigate;
onContextMenuOpen: OnContextMenuOpen; visitEntityContextMenu: VisitEntityContextMenu;
} }
@observer @observer
@ -36,7 +36,7 @@ class NonInjectedCatalogEntityDrawerMenu<T extends CatalogEntity> extends React.
private readonly menuItems = observable.array<CatalogEntityContextMenu>(); private readonly menuItems = observable.array<CatalogEntityContextMenu>();
componentDidMount() { componentDidMount() {
this.props.onContextMenuOpen(this.props.entity, { this.props.visitEntityContextMenu(this.props.entity, {
menuItems: this.menuItems, menuItems: this.menuItems,
navigate: this.props.navigate, navigate: this.props.navigate,
}); });
@ -108,7 +108,7 @@ class NonInjectedCatalogEntityDrawerMenu<T extends CatalogEntity> extends React.
export const CatalogEntityDrawerMenu = withInjectables<Dependencies, CatalogEntityDrawerMenuProps<CatalogEntity>>(NonInjectedCatalogEntityDrawerMenu, { export const CatalogEntityDrawerMenu = withInjectables<Dependencies, CatalogEntityDrawerMenuProps<CatalogEntity>>(NonInjectedCatalogEntityDrawerMenu, {
getProps: (di, props) => ({ getProps: (di, props) => ({
...props, ...props,
onContextMenuOpen: di.inject(onContextMenuOpenInjectable), visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable), normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable),
navigate: di.inject(navigateInjectable), 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 appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable";
import hotbarStoreInjectable from "../../../common/hotbars/store.injectable"; import hotbarStoreInjectable from "../../../common/hotbars/store.injectable";
import type { HotbarStore } from "../../../common/hotbars/store"; 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 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 type { Navigate } from "../../navigation/navigate.injectable";
import navigateInjectable from "../../navigation/navigate.injectable"; import navigateInjectable from "../../navigation/navigate.injectable";
import type { NormalizeCatalogEntityContextMenu } from "../../catalog/normalize-menu-item.injectable"; import type { NormalizeCatalogEntityContextMenu } from "../../catalog/normalize-menu-item.injectable";
@ -62,7 +62,7 @@ interface Dependencies {
navigateToCatalog: NavigateToCatalog; navigateToCatalog: NavigateToCatalog;
hotbarStore: HotbarStore; hotbarStore: HotbarStore;
catalogCategoryRegistry: CatalogCategoryRegistry; catalogCategoryRegistry: CatalogCategoryRegistry;
onContextMenuOpen: OnContextMenuOpen; visitEntityContextMenu: VisitEntityContextMenu;
navigate: Navigate; navigate: Navigate;
normalizeMenuItem: NormalizeCatalogEntityContextMenu; normalizeMenuItem: NormalizeCatalogEntityContextMenu;
} }
@ -191,7 +191,7 @@ class NonInjectedCatalog extends React.Component<Dependencies> {
renderItemMenu = (entity: CatalogEntity) => { renderItemMenu = (entity: CatalogEntity) => {
const onOpen = () => { const onOpen = () => {
this.menuItems.clear(); this.menuItems.clear();
this.props.onContextMenuOpen(entity, { this.props.visitEntityContextMenu(entity, {
menuItems: this.menuItems, menuItems: this.menuItems,
navigate: this.props.navigate, navigate: this.props.navigate,
}); });
@ -359,7 +359,7 @@ export const Catalog = withInjectables<Dependencies>(NonInjectedCatalog, {
emitEvent: di.inject(appEventBusInjectable).emit, emitEvent: di.inject(appEventBusInjectable).emit,
hotbarStore: di.inject(hotbarStoreInjectable), hotbarStore: di.inject(hotbarStoreInjectable),
catalogCategoryRegistry: di.inject(catalogCategoryRegistryInjectable), catalogCategoryRegistry: di.inject(catalogCategoryRegistryInjectable),
onContextMenuOpen: di.inject(onContextMenuOpenInjectable), visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
navigate: di.inject(navigateInjectable), navigate: di.inject(navigateInjectable),
normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable), normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable),
}), }),

View File

@ -16,11 +16,11 @@ import { cssNames } from "../../utils";
import { Icon } from "../icon"; import { Icon } from "../icon";
import { HotbarIcon } from "./hotbar-icon"; import { HotbarIcon } from "./hotbar-icon";
import { LensKubernetesClusterStatus } from "../../../common/catalog-entities/kubernetes-cluster"; 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 { navigate } from "../../navigation";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import catalogCategoryRegistryInjectable from "../../../common/catalog/category-registry.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 activeEntityInjectable from "../../api/catalog/entity/active.injectable"; import activeEntityInjectable from "../../api/catalog/entity/active.injectable";
export interface HotbarEntityIconProps { export interface HotbarEntityIconProps {
@ -35,7 +35,7 @@ export interface HotbarEntityIconProps {
} }
interface Dependencies { interface Dependencies {
onContextMenuOpen: OnContextMenuOpen; visitEntityContextMenu: VisitEntityContextMenu;
catalogCategoryRegistry: CatalogCategoryRegistry; catalogCategoryRegistry: CatalogCategoryRegistry;
activeEntity: IComputedValue<CatalogEntity | undefined>; activeEntity: IComputedValue<CatalogEntity | undefined>;
} }
@ -84,7 +84,7 @@ class NonInjectedHotbarEntityIcon extends React.Component<HotbarEntityIconProps
onClick: () => this.props.remove(this.props.entity.getId()), onClick: () => this.props.remove(this.props.entity.getId()),
}]); }]);
this.props.onContextMenuOpen(this.props.entity, { this.props.visitEntityContextMenu(this.props.entity, {
menuItems: this.menuItems, menuItems: this.menuItems,
navigate, navigate,
}); });
@ -124,7 +124,7 @@ export const HotbarEntityIcon = withInjectables<Dependencies, HotbarEntityIconPr
getProps: (di, props) => ({ getProps: (di, props) => ({
...props, ...props,
catalogCategoryRegistry: di.inject(catalogCategoryRegistryInjectable), catalogCategoryRegistry: di.inject(catalogCategoryRegistryInjectable),
onContextMenuOpen: di.inject(onContextMenuOpenInjectable), visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
activeEntity: di.inject(activeEntityInjectable), 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 hotbarStoreInjectable from "../../../common/hotbars/store.injectable";
import type { HotbarStore } from "../../../common/hotbars/store"; import type { HotbarStore } from "../../../common/hotbars/store";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { OnContextMenuOpen } from "../../../common/catalog/on-context-menu-open.injectable"; import type { VisitEntityContextMenu } from "../../../common/catalog/visit-entity-context-menu.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 type { Navigate } from "../../navigation/navigate.injectable";
import type { NormalizeCatalogEntityContextMenu } from "../../catalog/normalize-menu-item.injectable"; import type { NormalizeCatalogEntityContextMenu } from "../../catalog/normalize-menu-item.injectable";
import navigateInjectable from "../../navigation/navigate.injectable"; import navigateInjectable from "../../navigation/navigate.injectable";
@ -32,13 +32,13 @@ interface Dependencies {
navigate: Navigate; navigate: Navigate;
normalizeMenuItem: NormalizeCatalogEntityContextMenu; normalizeMenuItem: NormalizeCatalogEntityContextMenu;
hotbarStore: HotbarStore; hotbarStore: HotbarStore;
onContextMenuOpen: OnContextMenuOpen; visitEntityContextMenu: VisitEntityContextMenu;
} }
const NonInjectedSidebarCluster = observer(({ const NonInjectedSidebarCluster = observer(({
clusterEntity, clusterEntity,
hotbarStore, hotbarStore,
onContextMenuOpen, visitEntityContextMenu: onContextMenuOpen,
navigate, navigate,
normalizeMenuItem, normalizeMenuItem,
}: Dependencies & SidebarClusterProps) => { }: Dependencies & SidebarClusterProps) => {
@ -148,7 +148,7 @@ export const SidebarCluster = withInjectables<Dependencies, SidebarClusterProps>
getProps: (di, props) => ({ getProps: (di, props) => ({
...props, ...props,
hotbarStore: di.inject(hotbarStoreInjectable), hotbarStore: di.inject(hotbarStoreInjectable),
onContextMenuOpen: di.inject(onContextMenuOpenInjectable), visitEntityContextMenu: di.inject(visitEntityContextMenuInjectable),
navigate: di.inject(navigateInjectable), navigate: di.inject(navigateInjectable),
normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable), normalizeMenuItem: di.inject(normalizeCatalogEntityContextMenuInjectable),
}), }),