1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fix custom-resource navigation (#4831)

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-02-08 08:43:50 -05:00 committed by GitHub
parent 0745f9c063
commit f53892cb46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 34 deletions

View File

@ -7,11 +7,9 @@ import { computed, IComputedValue } from "mobx";
import type { CustomResourceDefinition } from "../../../common/k8s-api/endpoints"; import type { CustomResourceDefinition } from "../../../common/k8s-api/endpoints";
import { crdURL, crdDefinitionsRoute } from "../../../common/routes"; import { crdURL, crdDefinitionsRoute } from "../../../common/routes";
import type { TabLayoutRoute } from "../layout/tab-layout"; import type { TabLayoutRoute } from "../layout/tab-layout";
import { CrdList } from "./crd-list";
import { CrdResources } from "./crd-resources";
import groupedCustomResourceDefinitionsInjectable from "./grouped-custom-resources.injectable"; import groupedCustomResourceDefinitionsInjectable from "./grouped-custom-resources.injectable";
export interface CustomResourceTabLayoutRoute extends TabLayoutRoute { export interface CustomResourceTabLayoutRoute extends Omit<TabLayoutRoute, "component"> {
id: string; id: string;
} }
@ -29,7 +27,6 @@ function getRouteTabs({ customResourcesDefinitions }: Dependencies) {
{ {
id: "definitions", id: "definitions",
title: "Definitions", title: "Definitions",
component: CrdList,
url: crdURL(), url: crdURL(),
routePath: String(crdDefinitionsRoute.path), routePath: String(crdDefinitionsRoute.path),
exact: true, exact: true,
@ -41,12 +38,10 @@ function getRouteTabs({ customResourcesDefinitions }: Dependencies) {
id: `crd-group:${group}`, id: `crd-group:${group}`,
title: group, title: group,
routePath: crdURL({ query: { groups: group }}), routePath: crdURL({ query: { groups: group }}),
component: CrdResources,
subRoutes: definitions.map(crd => ({ subRoutes: definitions.map(crd => ({
id: `crd-resource:${crd.getResourceApiBase()}`, id: `crd-resource:${crd.getResourceApiBase()}`,
title: crd.getResourceKind(), title: crd.getResourceKind(),
routePath: crd.getResourceUrl(), routePath: crd.getResourceUrl(),
component: CrdResources,
})), })),
}); });
} }

View File

@ -4,40 +4,18 @@
*/ */
import React from "react"; import React from "react";
import { observer } from "mobx-react";
import { Redirect, Route, Switch } from "react-router"; import { Redirect, Route, Switch } from "react-router";
import { TabLayout } from "../layout/tab-layout"; import { TabLayout } from "../layout/tab-layout";
import { crdURL } from "../../../common/routes"; import { crdDefinitionsRoute, crdResourcesRoute, crdURL } from "../../../common/routes";
import type { IComputedValue } from "mobx"; import { CrdList, CrdResources } from ".";
import type { CustomResourceGroupTabLayoutRoute } from "./route-tabs.injectable";
import { withInjectables } from "@ogre-tools/injectable-react";
import customResourcesRouteTabsInjectable from "./route-tabs.injectable";
interface Dependencies { export const CustomResourcesRoute = () => (
routes: IComputedValue<CustomResourceGroupTabLayoutRoute[]>;
}
const NonInjectedCustomResourcesRoute = observer(({ routes }: Dependencies) => (
<TabLayout> <TabLayout>
<Switch> <Switch>
{ <Route component={CrdList} {...crdDefinitionsRoute} exact/>
routes.get().map(({ id, component, routePath, exact }) => ( <Route component={CrdResources} {...crdResourcesRoute}/>
<Route
key={id}
component={component}
path={routePath}
exact={exact}
/>
))
}
<Redirect to={crdURL()}/> <Redirect to={crdURL()}/>
</Switch> </Switch>
</TabLayout> </TabLayout>
)); );
export const CustomResourcesRoute = withInjectables<Dependencies>(NonInjectedCustomResourcesRoute, {
getProps: (di, props) => ({
routes: di.inject(customResourcesRouteTabsInjectable),
...props,
}),
});