diff --git a/frontend/packages/shipwright-plugin/src/components/build-details/BuildDetailsPage.tsx b/frontend/packages/shipwright-plugin/src/components/build-details/BuildDetailsPage.tsx index 4006d9663c2..c3a07899d66 100644 --- a/frontend/packages/shipwright-plugin/src/components/build-details/BuildDetailsPage.tsx +++ b/frontend/packages/shipwright-plugin/src/components/build-details/BuildDetailsPage.tsx @@ -7,12 +7,15 @@ import { ActionMenuVariant, ActionServiceProvider, } from '@console/shared/src/components/actions'; -import { useShipwrightBreadcrumbsFor } from '../../utils'; +import { useBuildModel, useShipwrightBreadcrumbsFor } from '../../utils'; import BuildDetailsTab from './BuildDetailsTab'; import BuildEventsTab from './BuildEventsTab'; import BuildRunsTab from './BuildRunsTab'; const BuildDetailsPage: React.FC = (props) => { + const model = useBuildModel(); + const breadcrumbs = useShipwrightBreadcrumbsFor(model); + const customActionMenu = (_, build) => { const kindReference = referenceFor(build); const context = { [kindReference]: build }; @@ -44,7 +47,7 @@ const BuildDetailsPage: React.FC = (props) => { {...props} customActionMenu={customActionMenu} pages={pages} - breadcrumbsFor={useShipwrightBreadcrumbsFor} + breadcrumbsFor={() => breadcrumbs} /> ); }; diff --git a/frontend/packages/shipwright-plugin/src/components/buildrun-details/BuildRunDetailsPage.tsx b/frontend/packages/shipwright-plugin/src/components/buildrun-details/BuildRunDetailsPage.tsx index 4dc1be85490..df6ec71f2f7 100644 --- a/frontend/packages/shipwright-plugin/src/components/buildrun-details/BuildRunDetailsPage.tsx +++ b/frontend/packages/shipwright-plugin/src/components/buildrun-details/BuildRunDetailsPage.tsx @@ -7,13 +7,16 @@ import { ActionMenuVariant, ActionServiceProvider, } from '@console/shared/src/components/actions'; -import { useShipwrightBreadcrumbsFor } from '../../utils'; +import { useBuildRunModel, useShipwrightBreadcrumbsFor } from '../../utils'; import { getBuildRunStatus } from '../buildrun-status/BuildRunStatus'; import BuildRunDetailsTab from './BuildRunDetailsTab'; import BuildRunEventsTab from './BuildRunEventsTab'; import BuildRunLogsTab from './BuildRunLogsTab'; const BuildRunDetailsPage: React.FC = (props) => { + const model = useBuildRunModel(); + const breadcrumbs = useShipwrightBreadcrumbsFor(model); + const customActionMenu = (_, buildRun) => { const kindReference = referenceFor(buildRun); const context = { [kindReference]: buildRun }; @@ -41,7 +44,7 @@ const BuildRunDetailsPage: React.FC = (props) => { getResourceStatus={getBuildRunStatus} customActionMenu={customActionMenu} pages={pages} - breadcrumbsFor={useShipwrightBreadcrumbsFor} + breadcrumbsFor={() => breadcrumbs} /> ); }; diff --git a/frontend/packages/shipwright-plugin/src/components/buildstrategy-details/BuildStrategyDetailsPage.tsx b/frontend/packages/shipwright-plugin/src/components/buildstrategy-details/BuildStrategyDetailsPage.tsx index 20959b24fbf..2cfd9a8cea0 100644 --- a/frontend/packages/shipwright-plugin/src/components/buildstrategy-details/BuildStrategyDetailsPage.tsx +++ b/frontend/packages/shipwright-plugin/src/components/buildstrategy-details/BuildStrategyDetailsPage.tsx @@ -2,12 +2,14 @@ import * as React from 'react'; import { DetailsForKind } from '@console/internal/components/default-resource'; import { DetailsPage, DetailsPageProps } from '@console/internal/components/factory'; import { Page, navFactory } from '@console/internal/components/utils'; -import { useShipwrightBreadcrumbsFor } from '../../utils'; +import { useBuildStrategyModel, useShipwrightBreadcrumbsFor } from '../../utils'; const BuildStrategyPage: React.FC = (props) => { + const model = useBuildStrategyModel(); + const breadcrumbs = useShipwrightBreadcrumbsFor(model); const pages: Page[] = [navFactory.details(DetailsForKind), navFactory.editYaml()]; - return ; + return breadcrumbs} />; }; export default BuildStrategyPage; diff --git a/frontend/packages/shipwright-plugin/src/components/clusterbuildstrategy-details/ClusterBuildStrategyDetailsPage.tsx b/frontend/packages/shipwright-plugin/src/components/clusterbuildstrategy-details/ClusterBuildStrategyDetailsPage.tsx index 2867c9ee958..532665d7da3 100644 --- a/frontend/packages/shipwright-plugin/src/components/clusterbuildstrategy-details/ClusterBuildStrategyDetailsPage.tsx +++ b/frontend/packages/shipwright-plugin/src/components/clusterbuildstrategy-details/ClusterBuildStrategyDetailsPage.tsx @@ -2,12 +2,14 @@ import * as React from 'react'; import { DetailsForKind } from '@console/internal/components/default-resource'; import { DetailsPage, DetailsPageProps } from '@console/internal/components/factory'; import { Page, navFactory } from '@console/internal/components/utils'; -import { useShipwrightBreadcrumbsFor } from '../../utils'; +import { useClusterBuildStrategyModel, useShipwrightBreadcrumbsFor } from '../../utils'; const ClusterBuildStrategyPage: React.FC = (props) => { + const model = useClusterBuildStrategyModel(); + const breadcrumbs = useShipwrightBreadcrumbsFor(model); const pages: Page[] = [navFactory.details(DetailsForKind), navFactory.editYaml()]; - return ; + return breadcrumbs} />; }; export default ClusterBuildStrategyPage; diff --git a/frontend/packages/shipwright-plugin/src/utils.ts b/frontend/packages/shipwright-plugin/src/utils.ts index 5c31a2aec18..d9e57036e87 100644 --- a/frontend/packages/shipwright-plugin/src/utils.ts +++ b/frontend/packages/shipwright-plugin/src/utils.ts @@ -193,46 +193,16 @@ const kindToTabMap = { [ClusterBuildStrategyModelV1Alpha1.kind]: 'clusterbuildstrategies', }; -/** convert a resource using a shipwright model to its corresponding k8s model */ -const resourceToModel = (obj: K8sResourceKind): K8sModel => { - if (obj?.apiVersion === 'shipwright.io/v1alpha1') { - switch (obj?.kind) { - case 'Build': - return BuildModelV1Alpha1; - case 'BuildRun': - return BuildRunModelV1Alpha1; - case 'BuildStrategy': - return BuildStrategyModelV1Alpha1; - case 'ClusterBuildStrategy': - return ClusterBuildStrategyModelV1Alpha1; - default: - return null; - } - } - switch (obj?.kind) { - case 'Build': - return BuildModel; - case 'BuildRun': - return BuildRunModel; - case 'BuildStrategy': - return BuildStrategyModel; - case 'ClusterBuildStrategy': - return ClusterBuildStrategyModel; - default: - return null; - } -}; - -export const useShipwrightBreadcrumbsFor = (obj: K8sResourceKind) => { +export const useShipwrightBreadcrumbsFor = (kindObj: K8sModel) => { const isAdminPerspective = useActivePerspective()[0] === 'admin'; const params = useParams(); const location = useLocation(); return useTabbedTableBreadcrumbsFor( - resourceToModel(obj), + kindObj ?? ({} as K8sModel), location, params, 'k8s', - `shipwright.io/${kindToTabMap[obj.kind]}`, + kindObj ? `shipwright.io/${kindToTabMap[kindObj.kind]}` : null, undefined, isAdminPerspective, );