From 12276af878c9d14797b2e1d85a0e46536cb78364 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 22 Dec 2022 11:28:10 -0500 Subject: [PATCH] Remove usages of legacy global catalogCategoryRegistry Signed-off-by: Sebastian Malton --- src/extensions/lens-renderer-extension.ts | 3 +- src/renderer/api/catalog-category-registry.ts | 11 ------ .../+catalog/catalog-add-button.tsx | 37 +++++++++++++------ 3 files changed, 27 insertions(+), 24 deletions(-) delete mode 100644 src/renderer/api/catalog-category-registry.ts diff --git a/src/extensions/lens-renderer-extension.ts b/src/extensions/lens-renderer-extension.ts index 89cd5dbee5..b1b024c091 100644 --- a/src/extensions/lens-renderer-extension.ts +++ b/src/extensions/lens-renderer-extension.ts @@ -4,10 +4,9 @@ */ import { Disposers, LensExtension, lensExtensionDependencies } from "./lens-extension"; -import type { CatalogEntity } from "../common/catalog"; +import type { CatalogEntity, CategoryFilter } from "../common/catalog"; import type { Disposer } from "../common/utils"; import type { EntityFilter } from "../renderer/api/catalog/entity/registry"; -import type { CategoryFilter } from "../renderer/api/catalog-category-registry"; import type { TopBarRegistration } from "../renderer/components/layout/top-bar/top-bar-registration"; import type { KubernetesCluster } from "../common/catalog-entities"; import type { WelcomeMenuRegistration } from "../renderer/components/+welcome/welcome-menu-items/welcome-menu-registration"; diff --git a/src/renderer/api/catalog-category-registry.ts b/src/renderer/api/catalog-category-registry.ts deleted file mode 100644 index 9023c5a755..0000000000 --- a/src/renderer/api/catalog-category-registry.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import catalogCategoryRegistryInjectable from "../../common/catalog/category-registry.injectable"; -import { asLegacyGlobalForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; - -export type { CategoryFilter } from "../../common/catalog"; - -export const catalogCategoryRegistry = asLegacyGlobalForExtensionApi(catalogCategoryRegistryInjectable); diff --git a/src/renderer/components/+catalog/catalog-add-button.tsx b/src/renderer/components/+catalog/catalog-add-button.tsx index 227dd811b5..ee7ca30757 100644 --- a/src/renderer/components/+catalog/catalog-add-button.tsx +++ b/src/renderer/components/+catalog/catalog-add-button.tsx @@ -10,10 +10,13 @@ import { Icon } from "../icon"; import { observer } from "mobx-react"; import { observable, makeObservable, action } from "mobx"; import { autoBind } from "../../../common/utils"; -import type { CatalogCategory, CatalogEntityAddMenuContext, CatalogEntityAddMenu } from "../../api/catalog-entity"; +import type { CatalogCategory, CatalogEntityAddMenu } from "../../api/catalog-entity"; import { EventEmitter } from "events"; -import { navigate } from "../../navigation"; -import { catalogCategoryRegistry } from "../../api/catalog-category-registry"; +import type { CatalogCategoryRegistry } from "../../../common/catalog"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import catalogCategoryRegistryInjectable from "../../../common/catalog/category-registry.injectable"; +import type { Navigate } from "../../navigation/navigate.injectable"; +import navigateInjectable from "../../navigation/navigate.injectable"; export interface CatalogAddButtonProps { category: CatalogCategory; @@ -21,12 +24,17 @@ export interface CatalogAddButtonProps { type CategoryId = string; +interface Dependencies { + catalogCategoryRegistry: CatalogCategoryRegistry; + navigate: Navigate; +} + @observer -export class CatalogAddButton extends React.Component { +class NonInjectedCatalogAddButton extends React.Component { @observable protected isOpen = false; @observable menuItems = new Map(); - constructor(props: CatalogAddButtonProps) { + constructor(props: CatalogAddButtonProps & Dependencies) { super(props); makeObservable(this); autoBind(this); @@ -43,7 +51,7 @@ export class CatalogAddButton extends React.Component { } get categories() { - return catalogCategoryRegistry.filteredItems; + return this.props.catalogCategoryRegistry.filteredItems; } @action @@ -61,12 +69,11 @@ export class CatalogAddButton extends React.Component { updateCategoryItems = action((category: CatalogCategory) => { if (category instanceof EventEmitter) { const menuItems: CatalogEntityAddMenu[] = []; - const context: CatalogEntityAddMenuContext = { - navigate: (url: string) => navigate(url), - menuItems, - }; - category.emit("catalogAddMenu", context); + category.emit("catalogAddMenu", { + navigate: this.props.navigate, + menuItems, + }); this.menuItems.set(category.getId(), menuItems); } }); @@ -133,3 +140,11 @@ export class CatalogAddButton extends React.Component { ); } } + +export const CatalogAddButton = withInjectables(NonInjectedCatalogAddButton, { + getProps: (di, props) => ({ + ...props, + catalogCategoryRegistry: di.inject(catalogCategoryRegistryInjectable), + navigate: di.inject(navigateInjectable), + }), +});