diff --git a/frontend/packages/topology/src/components/graph-view/components/nodes/BaseNode.tsx b/frontend/packages/topology/src/components/graph-view/components/nodes/BaseNode.tsx index 05b71d75429..cf63ee0e22d 100644 --- a/frontend/packages/topology/src/components/graph-view/components/nodes/BaseNode.tsx +++ b/frontend/packages/topology/src/components/graph-view/components/nodes/BaseNode.tsx @@ -50,14 +50,14 @@ const BaseNodeComponent: FC = ({ const cx = width / 2; const cy = height / 2; const resourceObj = getTopologyResourceObject(element.getData()); - const resourceModel = modelFor(referenceFor(resourceObj)); + const resourceModel = resourceObj ? modelFor(referenceFor(resourceObj)) : undefined; const iconRadius = innerRadius * 0.9; const editAccess = useAccessReview({ group: resourceModel?.apiGroup, verb: createConnectorAccessVerb, resource: resourceModel?.plural, - name: resourceObj.metadata.name, - namespace: resourceObj.metadata.namespace, + name: resourceObj?.metadata?.name, + namespace: resourceObj?.metadata?.namespace, }); const [filtered] = useSearchFilter(element.getLabel(), resourceObj?.metadata?.labels); const showLabel = useShowLabel(isHovering); diff --git a/frontend/packages/topology/src/components/graph-view/components/nodes/BindableNode.tsx b/frontend/packages/topology/src/components/graph-view/components/nodes/BindableNode.tsx index d3203f30713..20d850ea422 100644 --- a/frontend/packages/topology/src/components/graph-view/components/nodes/BindableNode.tsx +++ b/frontend/packages/topology/src/components/graph-view/components/nodes/BindableNode.tsx @@ -36,7 +36,7 @@ const BindableNode: FC = ({ const iconRadius = Math.min(width, height) * 0.25; const [dndDropProps, dndDropRef] = useDndDrop(spec, { element: nodeElement, ...rest }); const resourceObj = getTopologyResourceObject(element.getData()); - const resourceModel = modelFor(referenceFor(resourceObj)); + const resourceModel = resourceObj ? modelFor(referenceFor(resourceObj)) : undefined; const iconData = element.getData()?.data?.icon || openshiftImg; const kind = resourceModel && referenceForModel(resourceModel); diff --git a/frontend/packages/topology/src/components/graph-view/components/nodes/WorkloadNode.tsx b/frontend/packages/topology/src/components/graph-view/components/nodes/WorkloadNode.tsx index f77d388de14..236649792fe 100644 --- a/frontend/packages/topology/src/components/graph-view/components/nodes/WorkloadNode.tsx +++ b/frontend/packages/topology/src/components/graph-view/components/nodes/WorkloadNode.tsx @@ -234,8 +234,8 @@ const WorkloadNode: FC = observer(({ element, ...rest }) => { const resource = getTopologyResourceObject(element.getData()); const { podData, loadError, loaded } = usePodsWatcher( resource, - resource.kind, - resource.metadata.namespace, + resource?.kind, + resource?.metadata?.namespace, ); return ( (node: GraphElement return (resource as T) || (getTopologyResourceObject(node?.getData()) as T); }; -export const getResourceKind = (node: Node): K8sResourceKindReference => - node instanceof OdcBaseNode - ? (node as OdcBaseNode).getResourceKind() - : referenceFor(getTopologyResourceObject(node?.getData())); +export const getResourceKind = (node: Node): K8sResourceKindReference | undefined => { + if (node instanceof OdcBaseNode) { + return (node as OdcBaseNode).getResourceKind(); + } + const resource = getTopologyResourceObject(node?.getData()); + return resource ? referenceFor(resource) : undefined; +}; export const updateTopologyResourceApplication = ( item: Node, diff --git a/frontend/packages/topology/src/utils/withEditReviewAccess.tsx b/frontend/packages/topology/src/utils/withEditReviewAccess.tsx index cc55007b1d4..c832f4fb81d 100644 --- a/frontend/packages/topology/src/utils/withEditReviewAccess.tsx +++ b/frontend/packages/topology/src/utils/withEditReviewAccess.tsx @@ -11,15 +11,15 @@ import { getResource } from './topology-utils'; export const withEditReviewAccess: WithEditReviewAccess = (verb) => (WrappedComponent) => { const Component: FC = (props) => { const resourceObj = getResource(props.element); - const resourceModel = modelFor(referenceFor(resourceObj)); + const resourceModel = resourceObj ? modelFor(referenceFor(resourceObj)) : undefined; const editAccess = useAccessReview({ - group: resourceModel.apiGroup, + group: resourceModel?.apiGroup, verb, - resource: resourceModel.plural, - name: resourceObj.metadata.name, - namespace: resourceObj.metadata.namespace, + resource: resourceModel?.plural, + name: resourceObj?.metadata?.name, + namespace: resourceObj?.metadata?.namespace, }); - return ; + return ; }; Component.displayName = `withEditReviewAccess(${ WrappedComponent.displayName || WrappedComponent.name