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 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;
|
||||||
@ -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),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -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),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -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),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
@ -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),
|
||||||
}),
|
}),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user