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:
parent
dd27e46b00
commit
5dee0db95e
@ -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;
|
||||
@ -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),
|
||||
}),
|
||||
|
||||
@ -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),
|
||||
}),
|
||||
|
||||
@ -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),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -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),
|
||||
}),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user