From 6199d8a9ebb2df9ce985140181bd98b127f62dcd Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Fri, 25 Mar 2022 14:46:57 +0300 Subject: [PATCH] Make catalog pin icon observable Signed-off-by: Alex Andreev --- src/renderer/components/+catalog/catalog.tsx | 31 -------- .../+catalog/internal-category-columns.tsx | 71 ++++++++++--------- 2 files changed, 36 insertions(+), 66 deletions(-) diff --git a/src/renderer/components/+catalog/catalog.tsx b/src/renderer/components/+catalog/catalog.tsx index 359e538ac5..e536abf113 100644 --- a/src/renderer/components/+catalog/catalog.tsx +++ b/src/renderer/components/+catalog/catalog.tsx @@ -20,14 +20,11 @@ import { CatalogAddButton } from "./catalog-add-button"; import type { RouteComponentProps } from "react-router"; import { Notifications } from "../notifications"; import { MainLayout } from "../layout/main-layout"; -import { prevDefault } from "../../utils"; import { CatalogEntityDetails } from "./catalog-entity-details"; import { browseCatalogTab, catalogURL, CatalogViewRouteParam } from "../../../common/routes"; import { CatalogMenu } from "./catalog-menu"; import { RenderDelay } from "../render-delay/render-delay"; -import { Icon } from "../icon"; import { HotbarToggleMenuItem } from "./hotbar-toggle-menu-item"; -import { Avatar } from "../avatar"; import { withInjectables } from "@ogre-tools/injectable-react"; import catalogPreviousActiveTabStorageInjectable from "./catalog-previous-active-tab-storage/catalog-previous-active-tab-storage.injectable"; import catalogEntityStoreInjectable from "./catalog-entity-store/catalog-entity-store.injectable"; @@ -188,34 +185,6 @@ class NonInjectedCatalog extends React.Component { ); }; - renderName(entity: CatalogEntity) { - const isItemInHotbar = HotbarStore.getInstance().isAddedToActive(entity); - - return ( - <> - - {entity.spec.icon?.material && } - - {entity.getName()} - isItemInHotbar ? this.removeFromHotbar(entity) : this.addToHotbar(entity))} - /> - - ); - } - renderViews = () => { const { catalogEntityStore, customCategoryViews } = this.props; const { activeCategory } = catalogEntityStore; diff --git a/src/renderer/components/+catalog/internal-category-columns.tsx b/src/renderer/components/+catalog/internal-category-columns.tsx index 6aee0acc1d..c2e99d88c0 100644 --- a/src/renderer/components/+catalog/internal-category-columns.tsx +++ b/src/renderer/components/+catalog/internal-category-columns.tsx @@ -14,40 +14,7 @@ import { Icon } from "../icon"; import { prevDefault } from "../../utils"; import { getLabelBadges } from "./helpers"; import { KubeObject } from "../../../common/k8s-api/kube-object"; - -function renderEntityName(entity: CatalogEntity) { - const hotbarStore = HotbarStore.getInstance(); - const isItemInHotbar = hotbarStore.isAddedToActive(entity); - const onClick = prevDefault( - isItemInHotbar - ? () => hotbarStore.removeFromHotbar(entity.getId()) - : () => hotbarStore.addToHotbar(entity), - ); - - return ( - <> - - {entity.spec.icon?.material && } - - {entity.getName()} - - - ); -} +import { observer } from "mobx-react"; export const browseAllColumns: RegisteredAdditionalCategoryColumn[] = [ { @@ -66,7 +33,7 @@ export const browseAllColumns: RegisteredAdditionalCategoryColumn[] = [ export const nameCategoryColumn: RegisteredAdditionalCategoryColumn = { id: "name", priority: 0, - renderCell: renderEntityName, + renderCell: (entity) => , titleProps: { title: "Name", className: styles.entityName, @@ -119,3 +86,37 @@ export const defaultCategoryColumns: RegisteredAdditionalCategoryColumn[] = [ searchFilter: entity => entity.status.phase, }, ]; + +const EntityName = observer(({ entity }: { entity: CatalogEntity }) => { + const hotbarStore = HotbarStore.getInstance(); + const isItemInHotbar = hotbarStore.isAddedToActive(entity); + const onClick = prevDefault( + isItemInHotbar + ? () => hotbarStore.removeFromHotbar(entity.getId()) + : () => hotbarStore.addToHotbar(entity), + ); + + return ( + <> + + {entity.spec.icon?.material && } + + {entity.getName()} + + + ); +});