diff --git a/integration/__tests__/command-palette.tests.ts b/integration/__tests__/command-palette.tests.ts index 03ef6e23ae..14e95d1264 100644 --- a/integration/__tests__/command-palette.tests.ts +++ b/integration/__tests__/command-palette.tests.ts @@ -40,7 +40,7 @@ describe("Lens command palette", () => { it("opens command dialog from menu", async () => { await app.electron.ipcRenderer.send("test-menu-item-click", "View", "Command Palette..."); - await app.client.waitUntilTextExists(".Select__option", "Preferences: Open"); + await app.client.waitUntilTextExists(".Select__option", "Hotbar: Switch"); await app.client.keys("Escape"); }); }); diff --git a/src/common/catalog-entities/kubernetes-cluster.ts b/src/common/catalog-entities/kubernetes-cluster.ts index 2781c5dfb0..0ee8c7353f 100644 --- a/src/common/catalog-entities/kubernetes-cluster.ts +++ b/src/common/catalog-entities/kubernetes-cluster.ts @@ -26,9 +26,9 @@ import { ClusterStore } from "../cluster-store"; import { requestMain } from "../ipc"; import { productName } from "../vars"; import { CatalogCategory, CatalogCategorySpec } from "../catalog"; +import { addClusterURL } from "../routes"; import { app } from "electron"; - export type KubernetesClusterPrometheusMetrics = { address?: { namespace: string; @@ -172,7 +172,7 @@ export class KubernetesClusterCategory extends CatalogCategory { icon: "text_snippet", title: "Add from kubeconfig", onClick: () => { - ctx.navigate("/add-cluster"); + ctx.navigate(addClusterURL()); } }); }); diff --git a/src/renderer/components/+add-cluster/add-cluster.route.ts b/src/common/routes/add-cluster.ts similarity index 95% rename from src/renderer/components/+add-cluster/add-cluster.route.ts rename to src/common/routes/add-cluster.ts index 88e4b2ab01..93ac41f0bf 100644 --- a/src/renderer/components/+add-cluster/add-cluster.route.ts +++ b/src/common/routes/add-cluster.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const addClusterRoute: RouteProps = { path: "/add-cluster" diff --git a/src/renderer/components/+apps/apps.route.ts b/src/common/routes/apps.ts similarity index 95% rename from src/renderer/components/+apps/apps.route.ts rename to src/common/routes/apps.ts index 9babe0ca45..72a92616dc 100644 --- a/src/renderer/components/+apps/apps.route.ts +++ b/src/common/routes/apps.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const appsRoute: RouteProps = { path: "/apps", diff --git a/src/renderer/components/+catalog/catalog.route.ts b/src/common/routes/catalog.ts similarity index 87% rename from src/renderer/components/+catalog/catalog.route.ts rename to src/common/routes/catalog.ts index b7bbe8c993..1221e931d0 100644 --- a/src/renderer/components/+catalog/catalog.route.ts +++ b/src/common/routes/catalog.ts @@ -20,9 +20,9 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; -export interface ICatalogViewRouteParam { +export interface CatalogViewRouteParam { group?: string; kind?: string; } @@ -30,4 +30,4 @@ export const catalogRoute: RouteProps = { path: "/catalog/:group?/:kind?" }; -export const catalogURL = buildURL(catalogRoute.path); +export const catalogURL = buildURL(catalogRoute.path); diff --git a/src/renderer/components/cluster-manager/cluster-view.route.ts b/src/common/routes/cluster-view.ts similarity index 87% rename from src/renderer/components/cluster-manager/cluster-view.route.ts rename to src/common/routes/cluster-view.ts index 5f7fde56d7..66b9c63d60 100644 --- a/src/renderer/components/cluster-manager/cluster-view.route.ts +++ b/src/common/routes/cluster-view.ts @@ -20,9 +20,9 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; -export interface IClusterViewRouteParams { +export interface ClusterViewRouteParams { clusterId: string; } @@ -31,4 +31,4 @@ export const clusterViewRoute: RouteProps = { path: "/cluster/:clusterId", }; -export const clusterViewURL = buildURL(clusterViewRoute.path); +export const clusterViewURL = buildURL(clusterViewRoute.path); diff --git a/src/renderer/components/+cluster/cluster.route.ts b/src/common/routes/cluster.ts similarity index 95% rename from src/renderer/components/+cluster/cluster.route.ts rename to src/common/routes/cluster.ts index 01ce68a495..3a39ccd22a 100644 --- a/src/renderer/components/+cluster/cluster.route.ts +++ b/src/common/routes/cluster.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const clusterRoute: RouteProps = { path: "/cluster" diff --git a/src/renderer/components/+config-maps/config-maps.route.ts b/src/common/routes/config-maps.ts similarity index 86% rename from src/renderer/components/+config-maps/config-maps.route.ts rename to src/common/routes/config-maps.ts index fa9293d4b0..99aeaaf553 100644 --- a/src/renderer/components/+config-maps/config-maps.route.ts +++ b/src/common/routes/config-maps.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const configMapsRoute: RouteProps = { path: "/configmaps" }; -export interface IConfigMapsRouteParams { +export interface ConfigMapsRouteParams { } -export const configMapsURL = buildURL(configMapsRoute.path); +export const configMapsURL = buildURL(configMapsRoute.path); diff --git a/src/renderer/components/+config/config.route.ts b/src/common/routes/config.ts similarity index 72% rename from src/renderer/components/+config/config.route.ts rename to src/common/routes/config.ts index 6e3cd5696e..7dca290672 100644 --- a/src/renderer/components/+config/config.route.ts +++ b/src/common/routes/config.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import type { IURLParams } from "../../../common/utils/buildUrl"; -import { configMapsRoute, configMapsURL } from "../+config-maps/config-maps.route"; -import { hpaRoute } from "../+config-autoscalers"; -import { limitRangesRoute } from "../+config-limit-ranges"; -import { pdbRoute } from "../+config-pod-disruption-budgets"; -import { resourceQuotaRoute } from "../+config-resource-quotas"; -import { secretsRoute } from "../+config-secrets"; +import type { URLParams } from "../utils/buildUrl"; +import { configMapsRoute, configMapsURL } from "./config-maps"; +import { hpaRoute } from "./hpa"; +import { limitRangesRoute } from "./limit-ranges"; +import { pdbRoute } from "./pod-disruption-budgets"; +import { resourceQuotaRoute } from "./resource-quotas"; +import { secretsRoute } from "./secrets"; export const configRoute: RouteProps = { path: [ @@ -39,4 +39,4 @@ export const configRoute: RouteProps = { ].map(route => route.path.toString()) }; -export const configURL = (params?: IURLParams) => configMapsURL(params); +export const configURL = (params?: URLParams) => configMapsURL(params); diff --git a/src/renderer/components/+custom-resources/crd.route.ts b/src/common/routes/crd.ts similarity index 83% rename from src/renderer/components/+custom-resources/crd.route.ts rename to src/common/routes/crd.ts index 91042649e3..1a70fac875 100644 --- a/src/renderer/components/+custom-resources/crd.route.ts +++ b/src/common/routes/crd.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const crdRoute: RouteProps = { path: "/crd" @@ -34,14 +34,14 @@ export const crdResourcesRoute: RouteProps = { path: `${crdRoute.path}/:group/:name` }; -export interface ICRDListQuery { +export interface CRDListQuery { groups?: string; } -export interface ICRDRouteParams { +export interface CRDRouteParams { group: string; name: string; } -export const crdURL = buildURL<{}, ICRDListQuery>(crdDefinitionsRoute.path); -export const crdResourcesURL = buildURL(crdResourcesRoute.path); +export const crdURL = buildURL<{}, CRDListQuery>(crdDefinitionsRoute.path); +export const crdResourcesURL = buildURL(crdResourcesRoute.path); diff --git a/src/renderer/components/+network-endpoints/endpoints.route.ts b/src/common/routes/endpoints.ts similarity index 95% rename from src/renderer/components/+network-endpoints/endpoints.route.ts rename to src/common/routes/endpoints.ts index 18aaf10c74..db09de66a0 100644 --- a/src/renderer/components/+network-endpoints/endpoints.route.ts +++ b/src/common/routes/endpoints.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const endpointRoute: RouteProps = { path: "/endpoints" diff --git a/src/renderer/components/+entity-settings/entity-settings.route.ts b/src/common/routes/entity-settings.ts similarity index 96% rename from src/renderer/components/+entity-settings/entity-settings.route.ts rename to src/common/routes/entity-settings.ts index 20091c85e0..8368d81b7e 100644 --- a/src/renderer/components/+entity-settings/entity-settings.route.ts +++ b/src/common/routes/entity-settings.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export interface EntitySettingsRouteParams { entityId: string; diff --git a/src/renderer/components/+events/events.route.ts b/src/common/routes/events.ts similarity index 95% rename from src/renderer/components/+events/events.route.ts rename to src/common/routes/events.ts index 2760b7ef0b..73995ce6b0 100644 --- a/src/renderer/components/+events/events.route.ts +++ b/src/common/routes/events.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const eventRoute: RouteProps = { path: "/events" diff --git a/src/renderer/components/+extensions/extensions.route.ts b/src/common/routes/extensions.ts similarity index 95% rename from src/renderer/components/+extensions/extensions.route.ts rename to src/common/routes/extensions.ts index e8552eac10..6ef25d11c6 100644 --- a/src/renderer/components/+extensions/extensions.route.ts +++ b/src/common/routes/extensions.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const extensionsRoute: RouteProps = { path: "/extensions" diff --git a/src/renderer/components/+apps-helm-charts/helm-charts.route.ts b/src/common/routes/helm-charts.ts similarity index 84% rename from src/renderer/components/+apps-helm-charts/helm-charts.route.ts rename to src/common/routes/helm-charts.ts index 55a19eb826..53b889073d 100644 --- a/src/renderer/components/+apps-helm-charts/helm-charts.route.ts +++ b/src/common/routes/helm-charts.ts @@ -20,16 +20,16 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; -import { appsRoute } from "../+apps/apps.route"; +import { buildURL } from "../utils/buildUrl"; +import { appsRoute } from "./apps"; export const helmChartsRoute: RouteProps = { path: `${appsRoute.path}/charts/:repo?/:chartName?` }; -export interface IHelmChartsRouteParams { +export interface HelmChartsRouteParams { chartName?: string; repo?: string; } -export const helmChartsURL = buildURL(helmChartsRoute.path); +export const helmChartsURL = buildURL(helmChartsRoute.path); diff --git a/src/renderer/components/+config-autoscalers/hpa.route.ts b/src/common/routes/hpa.ts similarity index 88% rename from src/renderer/components/+config-autoscalers/hpa.route.ts rename to src/common/routes/hpa.ts index 59a6945f89..a6f89661c2 100644 --- a/src/renderer/components/+config-autoscalers/hpa.route.ts +++ b/src/common/routes/hpa.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const hpaRoute: RouteProps = { path: "/hpa" }; -export interface IHpaRouteParams { +export interface HpaRouteParams { } -export const hpaURL = buildURL(hpaRoute.path); +export const hpaURL = buildURL(hpaRoute.path); diff --git a/src/renderer/components/+cluster/index.ts b/src/common/routes/index.ts similarity index 53% rename from src/renderer/components/+cluster/index.ts rename to src/common/routes/index.ts index 34cc79e0f6..6cdd81e2b4 100644 --- a/src/renderer/components/+cluster/index.ts +++ b/src/common/routes/index.ts @@ -19,5 +19,36 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./cluster.route"; - +export * from "./add-cluster"; +export * from "./apps"; +export * from "./catalog"; +export * from "./cluster-view"; +export * from "./cluster"; +export * from "./config-maps"; +export * from "./config"; +export * from "./crd"; +export * from "./endpoints"; +export * from "./entity-settings"; +export * from "./events"; +export * from "./extensions"; +export * from "./helm-charts"; +export * from "./hpa"; +export * from "./ingresses"; +export * from "./limit-ranges"; +export * from "./namespaces"; +export * from "./network-policies"; +export * from "./network"; +export * from "./nodes"; +export * from "./pod-disruption-budgets"; +export * from "./preferences"; +export * from "./releases"; +export * from "./resource-quotas"; +export * from "./secrets"; +export * from "./services"; +export * from "./storage-classes"; +export * from "./storage"; +export * from "./user-management"; +export * from "./volume-claims"; +export * from "./volumes"; +export * from "./welcome"; +export * from "./workloads"; diff --git a/src/renderer/components/+network-ingresses/ingresses.route.ts b/src/common/routes/ingresses.ts similarity index 95% rename from src/renderer/components/+network-ingresses/ingresses.route.ts rename to src/common/routes/ingresses.ts index 29a8ed6ada..66c37774d5 100644 --- a/src/renderer/components/+network-ingresses/ingresses.route.ts +++ b/src/common/routes/ingresses.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const ingressRoute: RouteProps = { path: "/ingresses" diff --git a/src/renderer/components/+config-limit-ranges/limit-ranges.route.ts b/src/common/routes/limit-ranges.ts similarity index 95% rename from src/renderer/components/+config-limit-ranges/limit-ranges.route.ts rename to src/common/routes/limit-ranges.ts index af3bf27089..02b9258c67 100644 --- a/src/renderer/components/+config-limit-ranges/limit-ranges.route.ts +++ b/src/common/routes/limit-ranges.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const limitRangesRoute: RouteProps = { path: "/limitranges" diff --git a/src/renderer/components/+namespaces/namespaces.route.ts b/src/common/routes/namespaces.ts similarity index 86% rename from src/renderer/components/+namespaces/namespaces.route.ts rename to src/common/routes/namespaces.ts index 6419f2f72c..4a23950648 100644 --- a/src/renderer/components/+namespaces/namespaces.route.ts +++ b/src/common/routes/namespaces.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const namespacesRoute: RouteProps = { path: "/namespaces" }; -export interface INamespacesRouteParams { +export interface NamespacesRouteParams { } -export const namespacesURL = buildURL(namespacesRoute.path); +export const namespacesURL = buildURL(namespacesRoute.path); diff --git a/src/renderer/components/+network-policies/network-policies.route.ts b/src/common/routes/network-policies.ts similarity index 85% rename from src/renderer/components/+network-policies/network-policies.route.ts rename to src/common/routes/network-policies.ts index 3f905939ba..b49094a418 100644 --- a/src/renderer/components/+network-policies/network-policies.route.ts +++ b/src/common/routes/network-policies.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const networkPoliciesRoute: RouteProps = { path: "/network-policies" }; -export interface INetworkPoliciesRouteParams { +export interface NetworkPoliciesRouteParams { } -export const networkPoliciesURL = buildURL(networkPoliciesRoute.path); +export const networkPoliciesURL = buildURL(networkPoliciesRoute.path); diff --git a/src/renderer/components/+network/network.route.ts b/src/common/routes/network.ts similarity index 76% rename from src/renderer/components/+network/network.route.ts rename to src/common/routes/network.ts index a827461f8f..17b51e200a 100644 --- a/src/renderer/components/+network/network.route.ts +++ b/src/common/routes/network.ts @@ -20,19 +20,19 @@ */ import type { RouteProps } from "react-router"; -import { endpointRoute } from "../+network-endpoints"; -import { ingressRoute } from "../+network-ingresses"; -import { networkPoliciesRoute } from "../+network-policies"; -import { servicesRoute, servicesURL } from "../+network-services"; -import type { IURLParams } from "../../../common/utils/buildUrl"; +import type { URLParams } from "../utils/buildUrl"; +import { endpointRoute } from "./endpoints"; +import { ingressRoute } from "./ingresses"; +import { networkPoliciesRoute } from "./network-policies"; +import { servicesRoute, servicesURL } from "./services"; export const networkRoute: RouteProps = { path: [ servicesRoute, endpointRoute, ingressRoute, - networkPoliciesRoute + networkPoliciesRoute, ].map(route => route.path.toString()) }; -export const networkURL = (params?: IURLParams) => servicesURL(params); +export const networkURL = (params?: URLParams) => servicesURL(params); diff --git a/src/renderer/components/+nodes/nodes.route.ts b/src/common/routes/nodes.ts similarity index 88% rename from src/renderer/components/+nodes/nodes.route.ts rename to src/common/routes/nodes.ts index dd9fc5a1d4..bfb6d8ea00 100644 --- a/src/renderer/components/+nodes/nodes.route.ts +++ b/src/common/routes/nodes.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const nodesRoute: RouteProps = { path: "/nodes" }; -export interface INodesRouteParams { +export interface NodesRouteParams { } -export const nodesURL = buildURL(nodesRoute.path); +export const nodesURL = buildURL(nodesRoute.path); diff --git a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.route.ts b/src/common/routes/pod-disruption-budgets.ts similarity index 86% rename from src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.route.ts rename to src/common/routes/pod-disruption-budgets.ts index a8b8efb65f..985752746a 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.route.ts +++ b/src/common/routes/pod-disruption-budgets.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const pdbRoute: RouteProps = { path: "/poddisruptionbudgets" }; -export interface IPodDisruptionBudgetsRouteParams { +export interface PodDisruptionBudgetsRouteParams { } -export const pdbURL = buildURL(pdbRoute.path); +export const pdbURL = buildURL(pdbRoute.path); diff --git a/src/common/routes/preferences.ts b/src/common/routes/preferences.ts new file mode 100644 index 0000000000..45fd3074c8 --- /dev/null +++ b/src/common/routes/preferences.ts @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import type { RouteProps } from "react-router"; +import { buildURL } from "../utils/buildUrl"; + +export const preferencesRoute: RouteProps = { + path: "/preferences" +}; + +export const preferencesURL = buildURL(preferencesRoute.path); diff --git a/src/renderer/components/+apps-releases/release.route.ts b/src/common/routes/releases.ts similarity index 85% rename from src/renderer/components/+apps-releases/release.route.ts rename to src/common/routes/releases.ts index 6a2c5d3850..2984bfd245 100644 --- a/src/renderer/components/+apps-releases/release.route.ts +++ b/src/common/routes/releases.ts @@ -20,16 +20,16 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; -import { appsRoute } from "../+apps/apps.route"; +import { buildURL } from "../utils/buildUrl"; +import { appsRoute } from "./apps"; export const releaseRoute: RouteProps = { path: `${appsRoute.path}/releases/:namespace?/:name?` }; -export interface IReleaseRouteParams { +export interface ReleaseRouteParams { name?: string; namespace?: string; } -export const releaseURL = buildURL(releaseRoute.path); +export const releaseURL = buildURL(releaseRoute.path); diff --git a/src/renderer/components/+config-resource-quotas/resource-quotas.route.ts b/src/common/routes/resource-quotas.ts similarity index 86% rename from src/renderer/components/+config-resource-quotas/resource-quotas.route.ts rename to src/common/routes/resource-quotas.ts index dfbdab001d..7d8a5163a2 100644 --- a/src/renderer/components/+config-resource-quotas/resource-quotas.route.ts +++ b/src/common/routes/resource-quotas.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const resourceQuotaRoute: RouteProps = { path: "/resourcequotas" }; -export interface IResourceQuotaRouteParams { +export interface ResourceQuotaRouteParams { } -export const resourceQuotaURL = buildURL(resourceQuotaRoute.path); +export const resourceQuotaURL = buildURL(resourceQuotaRoute.path); diff --git a/src/renderer/components/+config-secrets/secrets.route.ts b/src/common/routes/secrets.ts similarity index 92% rename from src/renderer/components/+config-secrets/secrets.route.ts rename to src/common/routes/secrets.ts index 487b0198b0..10ee187f64 100644 --- a/src/renderer/components/+config-secrets/secrets.route.ts +++ b/src/common/routes/secrets.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const secretsRoute: RouteProps = { path: "/secrets" }; -export interface ISecretsRouteParams { +export interface SecretsRouteParams { } export const secretsURL = buildURL(secretsRoute.path); diff --git a/src/renderer/components/+network-services/services.route.ts b/src/common/routes/services.ts similarity index 87% rename from src/renderer/components/+network-services/services.route.ts rename to src/common/routes/services.ts index a145e4b93c..b4e3acdad9 100644 --- a/src/renderer/components/+network-services/services.route.ts +++ b/src/common/routes/services.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const servicesRoute: RouteProps = { path: "/services" }; -export interface IServicesRouteParams { +export interface ServicesRouteParams { } -export const servicesURL = buildURL(servicesRoute.path); +export const servicesURL = buildURL(servicesRoute.path); diff --git a/src/renderer/components/+storage-classes/storage-classes.route.ts b/src/common/routes/storage-classes.ts similarity index 86% rename from src/renderer/components/+storage-classes/storage-classes.route.ts rename to src/common/routes/storage-classes.ts index 75f25c2b5f..1a0128cbf8 100644 --- a/src/renderer/components/+storage-classes/storage-classes.route.ts +++ b/src/common/routes/storage-classes.ts @@ -20,14 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const storageClassesRoute: RouteProps = { path: "/storage-classes" }; -export interface IStorageClassesRouteParams { +export interface StorageClassesRouteParams { } -export const storageClassesURL = buildURL(storageClassesRoute.path); - +export const storageClassesURL = buildURL(storageClassesRoute.path); diff --git a/src/renderer/components/+storage/storage.route.ts b/src/common/routes/storage.ts similarity index 79% rename from src/renderer/components/+storage/storage.route.ts rename to src/common/routes/storage.ts index 6903a76375..5de524795d 100644 --- a/src/renderer/components/+storage/storage.route.ts +++ b/src/common/routes/storage.ts @@ -20,10 +20,10 @@ */ import type { RouteProps } from "react-router"; -import { storageClassesRoute } from "../+storage-classes"; -import { volumeClaimsRoute, volumeClaimsURL } from "../+storage-volume-claims"; -import { volumesRoute } from "../+storage-volumes"; -import type { IURLParams } from "../../../common/utils/buildUrl"; +import type { URLParams } from "../utils/buildUrl"; +import { storageClassesRoute } from "./storage-classes"; +import { volumeClaimsRoute, volumeClaimsURL } from "./volume-claims"; +import { volumesRoute } from "./volumes"; export const storageRoute: RouteProps = { path: [ @@ -33,4 +33,4 @@ export const storageRoute: RouteProps = { ].map(route => route.path.toString()) }; -export const storageURL = (params?: IURLParams) => volumeClaimsURL(params); +export const storageURL = (params?: URLParams) => volumeClaimsURL(params); diff --git a/src/renderer/components/+user-management/user-management.route.ts b/src/common/routes/user-management.ts similarity index 94% rename from src/renderer/components/+user-management/user-management.route.ts rename to src/common/routes/user-management.ts index 290e7fa2d4..97aef36e1f 100644 --- a/src/renderer/components/+user-management/user-management.route.ts +++ b/src/common/routes/user-management.ts @@ -19,9 +19,8 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import { buildURL, IURLParams } from "../../../common/utils/buildUrl"; - import type { RouteProps } from "react-router"; +import { buildURL, URLParams } from "../utils/buildUrl"; // Routes export const serviceAccountsRoute: RouteProps = { @@ -71,10 +70,10 @@ export interface ClusterRolesRouteParams { } // URL-builders -export const usersManagementURL = (params?: IURLParams) => serviceAccountsURL(params); +export const usersManagementURL = (params?: URLParams) => serviceAccountsURL(params); export const serviceAccountsURL = buildURL(serviceAccountsRoute.path); export const podSecurityPoliciesURL = buildURL(podSecurityPoliciesRoute.path); -export const roleBindingsURL = buildURL(roleBindingsRoute.path); -export const clusterRoleBindingsURL = buildURL(clusterRoleBindingsRoute.path); export const rolesURL = buildURL(rolesRoute.path); +export const roleBindingsURL = buildURL(roleBindingsRoute.path); export const clusterRolesURL = buildURL(clusterRolesRoute.path); +export const clusterRoleBindingsURL = buildURL(clusterRoleBindingsRoute.path); diff --git a/src/renderer/components/+storage-volume-claims/volume-claims.route.ts b/src/common/routes/volume-claims.ts similarity index 86% rename from src/renderer/components/+storage-volume-claims/volume-claims.route.ts rename to src/common/routes/volume-claims.ts index 2d22b6ed32..42171328df 100644 --- a/src/renderer/components/+storage-volume-claims/volume-claims.route.ts +++ b/src/common/routes/volume-claims.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const volumeClaimsRoute: RouteProps = { path: "/persistent-volume-claims" }; -export interface IVolumeClaimsRouteParams { +export interface VolumeClaimsRouteParams { } -export const volumeClaimsURL = buildURL(volumeClaimsRoute.path); +export const volumeClaimsURL = buildURL(volumeClaimsRoute.path); diff --git a/src/renderer/components/+storage-volumes/volumes.route.ts b/src/common/routes/volumes.ts similarity index 87% rename from src/renderer/components/+storage-volumes/volumes.route.ts rename to src/common/routes/volumes.ts index 822e2b738f..c5a969e988 100644 --- a/src/renderer/components/+storage-volumes/volumes.route.ts +++ b/src/common/routes/volumes.ts @@ -20,13 +20,13 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const volumesRoute: RouteProps = { path: "/persistent-volumes" }; -export interface IVolumesRouteParams { +export interface VolumesRouteParams { } -export const volumesURL = buildURL(volumesRoute.path); +export const volumesURL = buildURL(volumesRoute.path); diff --git a/src/renderer/components/+welcome/welcome.route.ts b/src/common/routes/welcome.ts similarity index 95% rename from src/renderer/components/+welcome/welcome.route.ts rename to src/common/routes/welcome.ts index b4a1fc24e2..dd854d11a1 100644 --- a/src/renderer/components/+welcome/welcome.route.ts +++ b/src/common/routes/welcome.ts @@ -20,7 +20,7 @@ */ import type { RouteProps } from "react-router"; -import { buildURL } from "../../../common/utils/buildUrl"; +import { buildURL } from "../utils/buildUrl"; export const welcomeRoute: RouteProps = { path: "/welcome" diff --git a/src/renderer/components/+workloads/workloads.route.ts b/src/common/routes/workloads.ts similarity index 66% rename from src/renderer/components/+workloads/workloads.route.ts rename to src/common/routes/workloads.ts index baef1928b7..94a9378d02 100644 --- a/src/renderer/components/+workloads/workloads.route.ts +++ b/src/common/routes/workloads.ts @@ -20,8 +20,8 @@ */ import type { RouteProps } from "react-router"; -import { buildURL, IURLParams } from "../../../common/utils/buildUrl"; -import type { KubeResource } from "../../../common/rbac"; +import { buildURL, URLParams } from "../utils/buildUrl"; +import type { KubeResource } from "../rbac"; // Routes export const overviewRoute: RouteProps = { @@ -63,40 +63,40 @@ export const workloadsRoute: RouteProps = { }; // Route params -export interface IWorkloadsOverviewRouteParams { +export interface WorkloadsOverviewRouteParams { } -export interface IPodsRouteParams { +export interface PodsRouteParams { } -export interface IDeploymentsRouteParams { +export interface DeploymentsRouteParams { } -export interface IDaemonSetsRouteParams { +export interface DaemonSetsRouteParams { } -export interface IStatefulSetsRouteParams { +export interface StatefulSetsRouteParams { } -export interface IReplicaSetsRouteParams { +export interface ReplicaSetsRouteParams { } -export interface IJobsRouteParams { +export interface JobsRouteParams { } -export interface ICronJobsRouteParams { +export interface CronJobsRouteParams { } // URL-builders -export const workloadsURL = (params?: IURLParams) => overviewURL(params); -export const overviewURL = buildURL(overviewRoute.path); -export const podsURL = buildURL(podsRoute.path); -export const deploymentsURL = buildURL(deploymentsRoute.path); -export const daemonSetsURL = buildURL(daemonSetsRoute.path); -export const statefulSetsURL = buildURL(statefulSetsRoute.path); -export const replicaSetsURL = buildURL(replicaSetsRoute.path); -export const jobsURL = buildURL(jobsRoute.path); -export const cronJobsURL = buildURL(cronJobsRoute.path); +export const workloadsURL = (params?: URLParams) => overviewURL(params); +export const overviewURL = buildURL(overviewRoute.path); +export const podsURL = buildURL(podsRoute.path); +export const deploymentsURL = buildURL(deploymentsRoute.path); +export const daemonSetsURL = buildURL(daemonSetsRoute.path); +export const statefulSetsURL = buildURL(statefulSetsRoute.path); +export const replicaSetsURL = buildURL(replicaSetsRoute.path); +export const jobsURL = buildURL(jobsRoute.path); +export const cronJobsURL = buildURL(cronJobsRoute.path); export const workloadURL: Partial>> = { "pods": podsURL, diff --git a/src/common/utils/buildUrl.ts b/src/common/utils/buildUrl.ts index 8ad88945df..20e6e7e861 100644 --- a/src/common/utils/buildUrl.ts +++ b/src/common/utils/buildUrl.ts @@ -21,7 +21,7 @@ import { compile } from "path-to-regexp"; -export interface IURLParams

{ +export interface URLParams

{ params?: P; query?: Q; fragment?: string; @@ -30,7 +30,7 @@ export interface IURLParams

{ export function buildURL

(path: string | any) { const pathBuilder = compile(String(path)); - return function ({ params, query, fragment }: IURLParams = {}): string { + return function ({ params, query, fragment }: URLParams = {}): string { const queryParams = query ? new URLSearchParams(Object.entries(query)).toString() : ""; const parts = [ pathBuilder(params), diff --git a/src/extensions/renderer-api/navigation.ts b/src/extensions/renderer-api/navigation.ts index 48896920b5..ab4186d2da 100644 --- a/src/extensions/renderer-api/navigation.ts +++ b/src/extensions/renderer-api/navigation.ts @@ -24,7 +24,7 @@ import { navigation, PageParam, PageParamInit } from "../../renderer/navigation" export type { PageParamInit, PageParam } from "../../renderer/navigation/page-param"; export { navigate, isActiveRoute } from "../../renderer/navigation/helpers"; export { hideDetails, showDetails, getDetailsUrl } from "../../renderer/components/kube-object/kube-object-details"; -export type { IURLParams } from "../../common/utils/buildUrl"; +export type { URLParams } from "../../common/utils/buildUrl"; export function createPageParam(init: PageParamInit) { return new PageParam(init, navigation); diff --git a/src/main/menu.ts b/src/main/menu.ts index 7070470679..7d80ce162e 100644 --- a/src/main/menu.ts +++ b/src/main/menu.ts @@ -23,16 +23,12 @@ import { app, BrowserWindow, dialog, ipcMain, IpcMainEvent, Menu, MenuItem, Menu import { autorun } from "mobx"; import type { WindowManager } from "./window-manager"; import { appName, isMac, isWindows, isTestEnv, docsUrl, supportUrl, productName } from "../common/vars"; -import { addClusterURL } from "../renderer/components/+add-cluster/add-cluster.route"; -import { preferencesURL } from "../renderer/components/+preferences/preferences.route"; -import { welcomeURL } from "../renderer/components/+welcome/welcome.route"; -import { extensionsURL } from "../renderer/components/+extensions/extensions.route"; -import { catalogURL } from "../renderer/components/+catalog/catalog.route"; import { menuRegistry } from "../extensions/registries/menu-registry"; import logger from "./logger"; import { exitApp } from "./exit-app"; import { broadcastMessage } from "../common/ipc"; import * as packageJson from "../../package.json"; +import { preferencesURL, extensionsURL, addClusterURL, catalogURL, welcomeURL } from "../common/routes"; export type MenuTopId = "mac" | "file" | "edit" | "view" | "help"; diff --git a/src/main/tray.ts b/src/main/tray.ts index cca3090828..24b00d122a 100644 --- a/src/main/tray.ts +++ b/src/main/tray.ts @@ -26,10 +26,10 @@ import { autorun } from "mobx"; import { showAbout } from "./menu"; import { checkForUpdates, isAutoUpdateEnabled } from "./app-updater"; import type { WindowManager } from "./window-manager"; -import { preferencesURL } from "../renderer/components/+preferences/preferences.route"; import logger from "./logger"; import { isDevelopment, isWindows, productName } from "../common/vars"; import { exitApp } from "./exit-app"; +import { preferencesURL } from "../common/routes"; const TRAY_LOG_PREFIX = "[TRAY]"; diff --git a/src/renderer/api/endpoints/crd.api.ts b/src/renderer/api/endpoints/crd.api.ts index 1d1d337d9c..35f85b8832 100644 --- a/src/renderer/api/endpoints/crd.api.ts +++ b/src/renderer/api/endpoints/crd.api.ts @@ -20,8 +20,8 @@ */ import { KubeObject } from "../kube-object"; -import { crdResourcesURL } from "../../components/+custom-resources/crd.route"; import { KubeApi } from "../kube-api"; +import { crdResourcesURL } from "../../../common/routes"; type AdditionalPrinterColumnsCommon = { name: string; diff --git a/src/renderer/components/+add-cluster/add-cluster.tsx b/src/renderer/components/+add-cluster/add-cluster.tsx index 3479fe0426..b04c9a2989 100644 --- a/src/renderer/components/+add-cluster/add-cluster.tsx +++ b/src/renderer/components/+add-cluster/add-cluster.tsx @@ -29,7 +29,7 @@ import { observer } from "mobx-react"; import path from "path"; import React from "react"; -import { catalogURL } from "../+catalog"; +import { catalogURL } from "../../../common/routes"; import { ClusterStore } from "../../../common/cluster-store"; import { appEventBus } from "../../../common/event-bus"; import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers"; diff --git a/src/renderer/components/+add-cluster/index.ts b/src/renderer/components/+add-cluster/index.ts index f04c6a4bdc..1949876060 100644 --- a/src/renderer/components/+add-cluster/index.ts +++ b/src/renderer/components/+add-cluster/index.ts @@ -20,4 +20,3 @@ */ export * from "./add-cluster"; -export * from "./add-cluster.route"; diff --git a/src/renderer/components/+apps-helm-charts/helm-charts.tsx b/src/renderer/components/+apps-helm-charts/helm-charts.tsx index 0bf80577bd..455c95e7e8 100644 --- a/src/renderer/components/+apps-helm-charts/helm-charts.tsx +++ b/src/renderer/components/+apps-helm-charts/helm-charts.tsx @@ -24,12 +24,13 @@ import "./helm-charts.scss"; import React, { Component } from "react"; import type { RouteComponentProps } from "react-router"; import { observer } from "mobx-react"; -import { helmChartsURL, IHelmChartsRouteParams } from "./helm-charts.route"; import { helmChartStore } from "./helm-chart.store"; import type { HelmChart } from "../../api/endpoints/helm-charts.api"; import { HelmChartDetails } from "./helm-chart-details"; import { navigation } from "../../navigation"; import { ItemListLayout } from "../item-object-list/item-list-layout"; +import { helmChartsURL } from "../../../common/routes"; +import type { HelmChartsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -39,7 +40,7 @@ enum columnId { repo = "repo", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+apps-helm-charts/index.ts b/src/renderer/components/+apps-helm-charts/index.ts index 400313ea32..74f1f4d66a 100644 --- a/src/renderer/components/+apps-helm-charts/index.ts +++ b/src/renderer/components/+apps-helm-charts/index.ts @@ -20,4 +20,3 @@ */ export * from "./helm-charts"; -export * from "./helm-charts.route"; diff --git a/src/renderer/components/+apps-releases/index.ts b/src/renderer/components/+apps-releases/index.ts index 01eeefb05f..100df69e95 100644 --- a/src/renderer/components/+apps-releases/index.ts +++ b/src/renderer/components/+apps-releases/index.ts @@ -20,4 +20,3 @@ */ export * from "./releases"; -export * from "./release.route"; diff --git a/src/renderer/components/+apps-releases/releases.tsx b/src/renderer/components/+apps-releases/releases.tsx index bb16a4e723..9a746b8909 100644 --- a/src/renderer/components/+apps-releases/releases.tsx +++ b/src/renderer/components/+apps-releases/releases.tsx @@ -26,7 +26,6 @@ import kebabCase from "lodash/kebabCase"; import { disposeOnUnmount, observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; import { releaseStore } from "./release.store"; -import { IReleaseRouteParams, releaseURL } from "./release.route"; import type { HelmRelease } from "../../api/endpoints/helm-releases.api"; import { ReleaseDetails } from "./release-details"; import { ReleaseRollbackDialog } from "./release-rollback-dialog"; @@ -35,6 +34,8 @@ import { ItemListLayout } from "../item-object-list/item-list-layout"; import { HelmReleaseMenu } from "./release-menu"; import { secretsStore } from "../+config-secrets/secrets.store"; import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter"; +import type { ReleaseRouteParams } from "../../../common/routes"; +import { releaseURL } from "../../../common/routes"; enum columnId { name = "name", @@ -47,7 +48,7 @@ enum columnId { updated = "update" } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+apps/apps.command.ts b/src/renderer/components/+apps/apps.command.ts index 830fad12d4..eca0529bc4 100644 --- a/src/renderer/components/+apps/apps.command.ts +++ b/src/renderer/components/+apps/apps.command.ts @@ -21,8 +21,7 @@ import { navigate } from "../../navigation"; import { commandRegistry } from "../../../extensions/registries/command-registry"; -import { helmChartsURL } from "../+apps-helm-charts"; -import { releaseURL } from "../+apps-releases"; +import { helmChartsURL, releaseURL } from "../../../common/routes"; commandRegistry.add({ id: "cluster.viewHelmCharts", diff --git a/src/renderer/components/+apps/apps.tsx b/src/renderer/components/+apps/apps.tsx index 3bdac50ce4..b12faa7ee7 100644 --- a/src/renderer/components/+apps/apps.tsx +++ b/src/renderer/components/+apps/apps.tsx @@ -22,8 +22,9 @@ import React from "react"; import { observer } from "mobx-react"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; -import { HelmCharts, helmChartsRoute, helmChartsURL } from "../+apps-helm-charts"; -import { HelmReleases, releaseRoute, releaseURL } from "../+apps-releases"; +import { HelmCharts } from "../+apps-helm-charts"; +import { HelmReleases } from "../+apps-releases"; +import { helmChartsURL, helmChartsRoute, releaseURL, releaseRoute } from "../../../common/routes"; @observer export class Apps extends React.Component { diff --git a/src/renderer/components/+apps/index.ts b/src/renderer/components/+apps/index.ts index 9cec263b5b..f0fa78df03 100644 --- a/src/renderer/components/+apps/index.ts +++ b/src/renderer/components/+apps/index.ts @@ -20,5 +20,4 @@ */ export * from "./apps"; -export * from "./apps.route"; export * from "./apps.command"; diff --git a/src/renderer/components/+catalog/catalog.tsx b/src/renderer/components/+catalog/catalog.tsx index fc42277c99..77a7a7ccc4 100644 --- a/src/renderer/components/+catalog/catalog.tsx +++ b/src/renderer/components/+catalog/catalog.tsx @@ -37,16 +37,15 @@ import { Tab, Tabs } from "../tabs"; import { catalogCategoryRegistry } from "../../../common/catalog"; import { CatalogAddButton } from "./catalog-add-button"; import type { RouteComponentProps } from "react-router"; -import type { ICatalogViewRouteParam } from "./catalog.route"; import { Notifications } from "../notifications"; import { Avatar } from "../avatar/avatar"; import { MainLayout } from "../layout/main-layout"; import { cssNames } from "../../utils"; import { TopBar } from "../layout/topbar"; -import { welcomeURL } from "../+welcome"; import { Icon } from "../icon"; import { MaterialTooltip } from "../material-tooltip/material-tooltip"; import { CatalogEntityDetails } from "./catalog-entity-details"; +import { CatalogViewRouteParam, welcomeURL } from "../../../common/routes"; enum sortBy { name = "name", @@ -55,8 +54,7 @@ enum sortBy { status = "status" } -interface Props extends RouteComponentProps {} - +interface Props extends RouteComponentProps {} @observer export class Catalog extends React.Component { @observable private catalogEntityStore?: CatalogEntityStore; diff --git a/src/renderer/components/+catalog/index.tsx b/src/renderer/components/+catalog/index.tsx index 0efe388e11..b658c981b2 100644 --- a/src/renderer/components/+catalog/index.tsx +++ b/src/renderer/components/+catalog/index.tsx @@ -19,5 +19,4 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./catalog.route"; export * from "./catalog"; diff --git a/src/renderer/components/+config-autoscalers/hpa.tsx b/src/renderer/components/+config-autoscalers/hpa.tsx index 54eb0b67a8..eca60e8c63 100644 --- a/src/renderer/components/+config-autoscalers/hpa.tsx +++ b/src/renderer/components/+config-autoscalers/hpa.tsx @@ -25,12 +25,12 @@ import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; import { KubeObjectListLayout } from "../kube-object"; -import type { IHpaRouteParams } from "./hpa.route"; import type { HorizontalPodAutoscaler } from "../../api/endpoints/hpa.api"; import { hpaStore } from "./hpa.store"; import { Badge } from "../badge"; import { cssNames } from "../../utils"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { HpaRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -43,7 +43,7 @@ enum columnId { status = "status" } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+config-autoscalers/index.ts b/src/renderer/components/+config-autoscalers/index.ts index ae6379ef6d..d7c91afc15 100644 --- a/src/renderer/components/+config-autoscalers/index.ts +++ b/src/renderer/components/+config-autoscalers/index.ts @@ -21,4 +21,3 @@ export * from "./hpa"; export * from "./hpa-details"; -export * from "./hpa.route"; diff --git a/src/renderer/components/+config-limit-ranges/index.ts b/src/renderer/components/+config-limit-ranges/index.ts index bb96c6a3d3..5666fc77c4 100644 --- a/src/renderer/components/+config-limit-ranges/index.ts +++ b/src/renderer/components/+config-limit-ranges/index.ts @@ -20,5 +20,4 @@ */ export * from "./limit-ranges"; -export * from "./limit-ranges.route"; export * from "./limit-range-details"; diff --git a/src/renderer/components/+config-limit-ranges/limit-ranges.tsx b/src/renderer/components/+config-limit-ranges/limit-ranges.tsx index 6784e6f7d6..664654814c 100644 --- a/src/renderer/components/+config-limit-ranges/limit-ranges.tsx +++ b/src/renderer/components/+config-limit-ranges/limit-ranges.tsx @@ -25,10 +25,10 @@ import type { RouteComponentProps } from "react-router"; import { observer } from "mobx-react"; import { KubeObjectListLayout } from "../kube-object/kube-object-list-layout"; import { limitRangeStore } from "./limit-ranges.store"; -import type { LimitRangeRouteParams } from "./limit-ranges.route"; import React from "react"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { LimitRange } from "../../api/endpoints/limit-range.api"; +import type { LimitRangeRouteParams } from "../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+config-maps/config-maps.tsx b/src/renderer/components/+config-maps/config-maps.tsx index b1997fa792..fb757a69bf 100644 --- a/src/renderer/components/+config-maps/config-maps.tsx +++ b/src/renderer/components/+config-maps/config-maps.tsx @@ -27,8 +27,8 @@ import type { RouteComponentProps } from "react-router"; import { configMapsStore } from "./config-maps.store"; import type { ConfigMap } from "../../api/endpoints/configmap.api"; import { KubeObjectListLayout } from "../kube-object"; -import type { IConfigMapsRouteParams } from "./config-maps.route"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { ConfigMapsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -37,7 +37,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+config-maps/index.ts b/src/renderer/components/+config-maps/index.ts index 537b8478f0..b4ca786263 100644 --- a/src/renderer/components/+config-maps/index.ts +++ b/src/renderer/components/+config-maps/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./config-maps.route"; export * from "./config-maps"; export * from "./config-map-details"; diff --git a/src/renderer/components/+config-pod-disruption-budgets/index.ts b/src/renderer/components/+config-pod-disruption-budgets/index.ts index af54d9ca04..d494a1fa36 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/index.ts +++ b/src/renderer/components/+config-pod-disruption-budgets/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./pod-disruption-budgets.route"; export * from "./pod-disruption-budgets"; export * from "./pod-disruption-budgets-details"; diff --git a/src/renderer/components/+config-resource-quotas/index.ts b/src/renderer/components/+config-resource-quotas/index.ts index f4c10c854d..e6f87451e5 100644 --- a/src/renderer/components/+config-resource-quotas/index.ts +++ b/src/renderer/components/+config-resource-quotas/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./resource-quotas.route"; export * from "./resource-quotas"; export * from "./resource-quota-details"; diff --git a/src/renderer/components/+config-resource-quotas/resource-quotas.tsx b/src/renderer/components/+config-resource-quotas/resource-quotas.tsx index 59be708d6f..d1ce05c098 100644 --- a/src/renderer/components/+config-resource-quotas/resource-quotas.tsx +++ b/src/renderer/components/+config-resource-quotas/resource-quotas.tsx @@ -28,8 +28,8 @@ import { KubeObjectListLayout } from "../kube-object"; import type { ResourceQuota } from "../../api/endpoints/resource-quota.api"; import { AddQuotaDialog } from "./add-quota-dialog"; import { resourceQuotaStore } from "./resource-quotas.store"; -import type { IResourceQuotaRouteParams } from "./resource-quotas.route"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { ResourceQuotaRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -37,7 +37,7 @@ enum columnId { age = "age" } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+config-secrets/index.ts b/src/renderer/components/+config-secrets/index.ts index 1cfc5d4062..783c83455d 100644 --- a/src/renderer/components/+config-secrets/index.ts +++ b/src/renderer/components/+config-secrets/index.ts @@ -19,7 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./secrets.route"; export * from "./secrets"; export * from "./secret-details"; - diff --git a/src/renderer/components/+config-secrets/secrets.tsx b/src/renderer/components/+config-secrets/secrets.tsx index b87c6a51ed..d74305a499 100644 --- a/src/renderer/components/+config-secrets/secrets.tsx +++ b/src/renderer/components/+config-secrets/secrets.tsx @@ -26,11 +26,11 @@ import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; import type { Secret } from "../../api/endpoints"; import { AddSecretDialog } from "./add-secret-dialog"; -import type { ISecretsRouteParams } from "./secrets.route"; import { KubeObjectListLayout } from "../kube-object"; import { Badge } from "../badge"; import { secretsStore } from "./secrets.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { SecretsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -41,7 +41,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+config/config.command.ts b/src/renderer/components/+config/config.command.ts index 21aeb82bd2..4e660fadea 100644 --- a/src/renderer/components/+config/config.command.ts +++ b/src/renderer/components/+config/config.command.ts @@ -21,51 +21,46 @@ import { navigate } from "../../navigation"; import { commandRegistry } from "../../../extensions/registries/command-registry"; -import { configMapsURL } from "../+config-maps"; -import { secretsURL } from "../+config-secrets"; -import { resourceQuotaURL } from "../+config-resource-quotas"; -import { limitRangeURL } from "../+config-limit-ranges"; -import { hpaURL } from "../+config-autoscalers"; -import { pdbURL } from "../+config-pod-disruption-budgets"; +import * as routes from "../../../common/routes"; commandRegistry.add({ id: "cluster.viewConfigMaps", title: "Cluster: View ConfigMaps", scope: "entity", - action: () => navigate(configMapsURL()) + action: () => navigate(routes.configMapsURL()) }); commandRegistry.add({ id: "cluster.viewSecrets", title: "Cluster: View Secrets", scope: "entity", - action: () => navigate(secretsURL()) + action: () => navigate(routes.secretsURL()) }); commandRegistry.add({ id: "cluster.viewResourceQuotas", title: "Cluster: View ResourceQuotas", scope: "entity", - action: () => navigate(resourceQuotaURL()) + action: () => navigate(routes.resourceQuotaURL()) }); commandRegistry.add({ id: "cluster.viewLimitRanges", title: "Cluster: View LimitRanges", scope: "entity", - action: () => navigate(limitRangeURL()) + action: () => navigate(routes.limitRangeURL()) }); commandRegistry.add({ id: "cluster.viewHorizontalPodAutoscalers", title: "Cluster: View HorizontalPodAutoscalers (HPA)", scope: "entity", - action: () => navigate(hpaURL()) + action: () => navigate(routes.hpaURL()) }); commandRegistry.add({ id: "cluster.viewPodDisruptionBudget", title: "Cluster: View PodDisruptionBudgets", scope: "entity", - action: () => navigate(pdbURL()) + action: () => navigate(routes.pdbURL()) }); diff --git a/src/renderer/components/+config/config.tsx b/src/renderer/components/+config/config.tsx index 51f7ddd184..c04f5eeb37 100644 --- a/src/renderer/components/+config/config.tsx +++ b/src/renderer/components/+config/config.tsx @@ -22,74 +22,75 @@ import React from "react"; import { observer } from "mobx-react"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; -import { ConfigMaps, configMapsRoute, configMapsURL } from "../+config-maps"; -import { Secrets, secretsRoute, secretsURL } from "../+config-secrets"; -import { resourceQuotaRoute, ResourceQuotas, resourceQuotaURL } from "../+config-resource-quotas"; -import { pdbRoute, pdbURL, PodDisruptionBudgets } from "../+config-pod-disruption-budgets"; -import { HorizontalPodAutoscalers, hpaRoute, hpaURL } from "../+config-autoscalers"; +import { ConfigMaps } from "../+config-maps"; +import { Secrets } from "../+config-secrets"; +import { ResourceQuotas } from "../+config-resource-quotas"; +import { PodDisruptionBudgets } from "../+config-pod-disruption-budgets"; +import { HorizontalPodAutoscalers } from "../+config-autoscalers"; import { isAllowedResource } from "../../../common/rbac"; -import { LimitRanges, limitRangesRoute, limitRangeURL } from "../+config-limit-ranges"; +import { LimitRanges } from "../+config-limit-ranges"; +import * as routes from "../../../common/routes"; @observer export class Config extends React.Component { static get tabRoutes(): TabLayoutRoute[] { - const routes: TabLayoutRoute[] = []; + const tabs: TabLayoutRoute[] = []; if (isAllowedResource("configmaps")) { - routes.push({ + tabs.push({ title: "ConfigMaps", component: ConfigMaps, - url: configMapsURL(), - routePath: configMapsRoute.path.toString(), + url: routes.configMapsURL(), + routePath: routes.configMapsRoute.path.toString(), }); } if (isAllowedResource("secrets")) { - routes.push({ + tabs.push({ title: "Secrets", component: Secrets, - url: secretsURL(), - routePath: secretsRoute.path.toString(), + url: routes.secretsURL(), + routePath: routes.secretsRoute.path.toString(), }); } if (isAllowedResource("resourcequotas")) { - routes.push({ + tabs.push({ title: "Resource Quotas", component: ResourceQuotas, - url: resourceQuotaURL(), - routePath: resourceQuotaRoute.path.toString(), + url: routes.resourceQuotaURL(), + routePath: routes.resourceQuotaRoute.path.toString(), }); } if (isAllowedResource("limitranges")) { - routes.push({ + tabs.push({ title: "Limit Ranges", component: LimitRanges, - url: limitRangeURL(), - routePath: limitRangesRoute.path.toString(), + url: routes.limitRangeURL(), + routePath: routes.limitRangesRoute.path.toString(), }); } if (isAllowedResource("horizontalpodautoscalers")) { - routes.push({ + tabs.push({ title: "HPA", component: HorizontalPodAutoscalers, - url: hpaURL(), - routePath: hpaRoute.path.toString(), + url: routes.hpaURL(), + routePath: routes.hpaRoute.path.toString(), }); } if (isAllowedResource("poddisruptionbudgets")) { - routes.push({ + tabs.push({ title: "Pod Disruption Budgets", component: PodDisruptionBudgets, - url: pdbURL(), - routePath: pdbRoute.path.toString(), + url: routes.pdbURL(), + routePath: routes.pdbRoute.path.toString(), }); } - return routes; + return tabs; } render() { diff --git a/src/renderer/components/+config/index.ts b/src/renderer/components/+config/index.ts index e8be23f1bc..0d30c3f64a 100644 --- a/src/renderer/components/+config/index.ts +++ b/src/renderer/components/+config/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./config.route"; export * from "./config"; export * from "./config.command"; diff --git a/src/renderer/components/+custom-resources/crd-resources.tsx b/src/renderer/components/+custom-resources/crd-resources.tsx index 76ea8607b5..0203bef3da 100644 --- a/src/renderer/components/+custom-resources/crd-resources.tsx +++ b/src/renderer/components/+custom-resources/crd-resources.tsx @@ -27,14 +27,14 @@ import { disposeOnUnmount, observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; import { KubeObjectListLayout } from "../kube-object"; import type { KubeObject } from "../../api/kube-object"; -import type { ICRDRouteParams } from "./crd.route"; import { autorun, computed, makeObservable } from "mobx"; import { crdStore } from "./crd.store"; import type { TableSortCallback } from "../table"; import { apiManager } from "../../api/api-manager"; import { parseJsonPath } from "../../utils/jsonPath"; +import type { CRDRouteParams } from "../../../common/routes"; -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } enum columnId { diff --git a/src/renderer/components/+custom-resources/custom-resources.tsx b/src/renderer/components/+custom-resources/custom-resources.tsx index 30d9969857..2d1a09aac9 100644 --- a/src/renderer/components/+custom-resources/custom-resources.tsx +++ b/src/renderer/components/+custom-resources/custom-resources.tsx @@ -23,9 +23,9 @@ import React from "react"; import { observer } from "mobx-react"; import { Redirect, Route, Switch } from "react-router"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; -import { crdDefinitionsRoute, crdResourcesRoute, crdURL } from "./crd.route"; import { CrdList } from "./crd-list"; import { CrdResources } from "./crd-resources"; +import { crdURL, crdDefinitionsRoute, crdResourcesRoute } from "../../../common/routes"; @observer export class CustomResources extends React.Component { diff --git a/src/renderer/components/+custom-resources/index.ts b/src/renderer/components/+custom-resources/index.ts index e17eee852f..b045590b14 100644 --- a/src/renderer/components/+custom-resources/index.ts +++ b/src/renderer/components/+custom-resources/index.ts @@ -19,7 +19,6 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./crd.route"; export * from "./crd-list"; export * from "./crd-details"; export * from "./crd-resources"; diff --git a/src/renderer/components/+entity-settings/entity-settings.tsx b/src/renderer/components/+entity-settings/entity-settings.tsx index 486b6eb105..5216915d89 100644 --- a/src/renderer/components/+entity-settings/entity-settings.tsx +++ b/src/renderer/components/+entity-settings/entity-settings.tsx @@ -31,7 +31,7 @@ import { Tabs, Tab } from "../tabs"; import type { CatalogEntity } from "../../api/catalog-entity"; import { catalogEntityRegistry } from "../../api/catalog-entity-registry"; import { entitySettingRegistry } from "../../../extensions/registries"; -import type { EntitySettingsRouteParams } from "./entity-settings.route"; +import type { EntitySettingsRouteParams } from "../../../common/routes"; import { groupBy } from "lodash"; interface Props extends RouteComponentProps { diff --git a/src/renderer/components/+entity-settings/index.ts b/src/renderer/components/+entity-settings/index.ts index c0acc36617..051b607dcc 100644 --- a/src/renderer/components/+entity-settings/index.ts +++ b/src/renderer/components/+entity-settings/index.ts @@ -21,5 +21,4 @@ import "../cluster-settings"; -export * from "./entity-settings.route"; export * from "./entity-settings"; diff --git a/src/renderer/components/+events/events.tsx b/src/renderer/components/+events/events.tsx index aa0ba475a9..f0d95bd41e 100644 --- a/src/renderer/components/+events/events.tsx +++ b/src/renderer/components/+events/events.tsx @@ -36,7 +36,7 @@ import { Link } from "react-router-dom"; import { cssNames, IClassName, stopPropagation } from "../../utils"; import { Icon } from "../icon"; import { lookupApiLink } from "../../api/kube-api"; -import { eventsURL } from "./events.route"; +import { eventsURL } from "../../../common/routes"; enum columnId { message = "message", diff --git a/src/renderer/components/+events/index.ts b/src/renderer/components/+events/index.ts index d14ee810d8..587e822adc 100644 --- a/src/renderer/components/+events/index.ts +++ b/src/renderer/components/+events/index.ts @@ -20,5 +20,4 @@ */ export * from "./events"; -export * from "./events.route"; export * from "./event-details"; diff --git a/src/renderer/components/+extensions/index.ts b/src/renderer/components/+extensions/index.ts index 359c1eb73f..8452ee5a3b 100644 --- a/src/renderer/components/+extensions/index.ts +++ b/src/renderer/components/+extensions/index.ts @@ -19,5 +19,4 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./extensions.route"; export * from "./extensions"; diff --git a/src/renderer/components/+namespaces/index.ts b/src/renderer/components/+namespaces/index.ts index 4d4ce14643..90f6135303 100644 --- a/src/renderer/components/+namespaces/index.ts +++ b/src/renderer/components/+namespaces/index.ts @@ -19,7 +19,6 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./namespaces.route"; export * from "./namespaces"; export * from "./namespace-details"; export * from "./add-namespace-dialog"; diff --git a/src/renderer/components/+namespaces/namespaces.tsx b/src/renderer/components/+namespaces/namespaces.tsx index 60ecc2f3e5..c80c839071 100644 --- a/src/renderer/components/+namespaces/namespaces.tsx +++ b/src/renderer/components/+namespaces/namespaces.tsx @@ -28,9 +28,9 @@ import { TabLayout } from "../layout/tab-layout"; import { Badge } from "../badge"; import type { RouteComponentProps } from "react-router"; import { KubeObjectListLayout } from "../kube-object"; -import type { INamespacesRouteParams } from "./namespaces.route"; import { namespaceStore } from "./namespace.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { NamespacesRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -39,7 +39,7 @@ enum columnId { status = "status", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } export class Namespaces extends React.Component { diff --git a/src/renderer/components/+network-endpoints/endpoints.tsx b/src/renderer/components/+network-endpoints/endpoints.tsx index 7cc74427fa..3ae66884fa 100644 --- a/src/renderer/components/+network-endpoints/endpoints.tsx +++ b/src/renderer/components/+network-endpoints/endpoints.tsx @@ -24,11 +24,11 @@ import "./endpoints.scss"; import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router-dom"; -import type { EndpointRouteParams } from "./endpoints.route"; import type { Endpoint } from "../../api/endpoints/endpoint.api"; import { endpointStore } from "./endpoints.store"; import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { EndpointRouteParams } from "../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+network-endpoints/index.ts b/src/renderer/components/+network-endpoints/index.ts index 6295e6341f..a6c1f07e45 100644 --- a/src/renderer/components/+network-endpoints/index.ts +++ b/src/renderer/components/+network-endpoints/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./endpoints.route"; export * from "./endpoints"; export * from "./endpoint-details"; diff --git a/src/renderer/components/+network-ingresses/index.ts b/src/renderer/components/+network-ingresses/index.ts index 855e2a0bcf..c950d57d01 100644 --- a/src/renderer/components/+network-ingresses/index.ts +++ b/src/renderer/components/+network-ingresses/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./ingresses.route"; export * from "./ingresses"; export * from "./ingress-details"; diff --git a/src/renderer/components/+network-ingresses/ingresses.tsx b/src/renderer/components/+network-ingresses/ingresses.tsx index 1ee39d4010..2a15bf5cb8 100644 --- a/src/renderer/components/+network-ingresses/ingresses.tsx +++ b/src/renderer/components/+network-ingresses/ingresses.tsx @@ -24,11 +24,11 @@ import "./ingresses.scss"; import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router-dom"; -import type { IngressRouteParams } from "./ingresses.route"; import type { Ingress } from "../../api/endpoints/ingress.api"; import { ingressStore } from "./ingress.store"; import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { IngressRouteParams } from "../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+network-policies/index.ts b/src/renderer/components/+network-policies/index.ts index f12802e068..fa2d9fd1af 100644 --- a/src/renderer/components/+network-policies/index.ts +++ b/src/renderer/components/+network-policies/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./network-policies.route"; export * from "./network-policies"; export * from "./network-policy-details"; diff --git a/src/renderer/components/+network-policies/network-policies.tsx b/src/renderer/components/+network-policies/network-policies.tsx index 1010c07175..6aa63eff23 100644 --- a/src/renderer/components/+network-policies/network-policies.tsx +++ b/src/renderer/components/+network-policies/network-policies.tsx @@ -26,9 +26,9 @@ import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router-dom"; import type { NetworkPolicy } from "../../api/endpoints/network-policy.api"; import { KubeObjectListLayout } from "../kube-object"; -import type { INetworkPoliciesRouteParams } from "./network-policies.route"; import { networkPolicyStore } from "./network-policy.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { NetworkPoliciesRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -37,7 +37,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+network-services/index.ts b/src/renderer/components/+network-services/index.ts index 5a75b46ee2..9c3666a24c 100644 --- a/src/renderer/components/+network-services/index.ts +++ b/src/renderer/components/+network-services/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./services.route"; export * from "./services"; export * from "./service-details"; diff --git a/src/renderer/components/+network-services/services.tsx b/src/renderer/components/+network-services/services.tsx index 33f9b73e08..502955b630 100644 --- a/src/renderer/components/+network-services/services.tsx +++ b/src/renderer/components/+network-services/services.tsx @@ -24,12 +24,12 @@ import "./services.scss"; import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; -import type { IServicesRouteParams } from "./services.route"; import type { Service } from "../../api/endpoints/service.api"; import { KubeObjectListLayout } from "../kube-object"; import { Badge } from "../badge"; import { serviceStore } from "./services.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { ServicesRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -43,7 +43,7 @@ enum columnId { status = "status", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+network/index.ts b/src/renderer/components/+network/index.ts index 92bb989bc2..bfb7c13b58 100644 --- a/src/renderer/components/+network/index.ts +++ b/src/renderer/components/+network/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./network.route"; export * from "./network"; export * from "./network.command"; diff --git a/src/renderer/components/+network/network.command.ts b/src/renderer/components/+network/network.command.ts index ef4639a9fc..4171348a1b 100644 --- a/src/renderer/components/+network/network.command.ts +++ b/src/renderer/components/+network/network.command.ts @@ -21,35 +21,32 @@ import { navigate } from "../../navigation"; import { commandRegistry } from "../../../extensions/registries/command-registry"; -import { servicesURL } from "../+network-services"; -import { endpointURL } from "../+network-endpoints"; -import { ingressURL } from "../+network-ingresses"; -import { networkPoliciesURL } from "../+network-policies"; +import * as routes from "../../../common/routes"; commandRegistry.add({ id: "cluster.viewServices", title: "Cluster: View Services", scope: "entity", - action: () => navigate(servicesURL()) + action: () => navigate(routes.servicesURL()) }); commandRegistry.add({ id: "cluster.viewEndpoints", title: "Cluster: View Endpoints", scope: "entity", - action: () => navigate(endpointURL()) + action: () => navigate(routes.endpointURL()) }); commandRegistry.add({ id: "cluster.viewIngresses", title: "Cluster: View Ingresses", scope: "entity", - action: () => navigate(ingressURL()) + action: () => navigate(routes.ingressURL()) }); commandRegistry.add({ id: "cluster.viewNetworkPolicies", title: "Cluster: View NetworkPolicies", scope: "entity", - action: () => navigate(networkPoliciesURL()) + action: () => navigate(routes.networkPoliciesURL()) }); diff --git a/src/renderer/components/+network/network.tsx b/src/renderer/components/+network/network.tsx index b126287215..ae4a7596fa 100644 --- a/src/renderer/components/+network/network.tsx +++ b/src/renderer/components/+network/network.tsx @@ -24,54 +24,55 @@ import "./network.scss"; import React from "react"; import { observer } from "mobx-react"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; -import { Services, servicesRoute, servicesURL } from "../+network-services"; -import { endpointRoute, Endpoints, endpointURL } from "../+network-endpoints"; -import { Ingresses, ingressRoute, ingressURL } from "../+network-ingresses"; -import { NetworkPolicies, networkPoliciesRoute, networkPoliciesURL } from "../+network-policies"; +import { Services } from "../+network-services"; +import { Endpoints } from "../+network-endpoints"; +import { Ingresses } from "../+network-ingresses"; +import { NetworkPolicies } from "../+network-policies"; import { isAllowedResource } from "../../../common/rbac"; +import * as routes from "../../../common/routes"; @observer export class Network extends React.Component { static get tabRoutes(): TabLayoutRoute[] { - const routes: TabLayoutRoute[] = []; + const tabs: TabLayoutRoute[] = []; if (isAllowedResource("services")) { - routes.push({ + tabs.push({ title: "Services", component: Services, - url: servicesURL(), - routePath: servicesRoute.path.toString(), + url: routes.servicesURL(), + routePath: routes.servicesRoute.path.toString(), }); } if (isAllowedResource("endpoints")) { - routes.push({ + tabs.push({ title: "Endpoints", component: Endpoints, - url: endpointURL(), - routePath: endpointRoute.path.toString(), + url: routes.endpointURL(), + routePath: routes.endpointRoute.path.toString(), }); } if (isAllowedResource("ingresses")) { - routes.push({ + tabs.push({ title: "Ingresses", component: Ingresses, - url: ingressURL(), - routePath: ingressRoute.path.toString(), + url: routes.ingressURL(), + routePath: routes.ingressRoute.path.toString(), }); } if (isAllowedResource("networkpolicies")) { - routes.push({ + tabs.push({ title: "Network Policies", component: NetworkPolicies, - url: networkPoliciesURL(), - routePath: networkPoliciesRoute.path.toString(), + url: routes.networkPoliciesURL(), + routePath: routes.networkPoliciesRoute.path.toString(), }); } - return routes; + return tabs; } render() { diff --git a/src/renderer/components/+nodes/index.ts b/src/renderer/components/+nodes/index.ts index 4c2e0a97c7..eb9f3cd2c1 100644 --- a/src/renderer/components/+nodes/index.ts +++ b/src/renderer/components/+nodes/index.ts @@ -20,6 +20,5 @@ */ export * from "./nodes"; -export * from "./nodes.route"; export * from "./node-details"; export * from "./node.command"; diff --git a/src/renderer/components/+nodes/node.command.ts b/src/renderer/components/+nodes/node.command.ts index 34e226c52a..314381b5a4 100644 --- a/src/renderer/components/+nodes/node.command.ts +++ b/src/renderer/components/+nodes/node.command.ts @@ -21,7 +21,7 @@ import { navigate } from "../../navigation"; import { commandRegistry } from "../../../extensions/registries/command-registry"; -import { nodesURL } from "./nodes.route"; +import { nodesURL } from "../../../common/routes"; commandRegistry.add({ id: "cluster.viewNodes", diff --git a/src/renderer/components/+nodes/nodes.tsx b/src/renderer/components/+nodes/nodes.tsx index 834ae80a0e..2b774f3618 100644 --- a/src/renderer/components/+nodes/nodes.tsx +++ b/src/renderer/components/+nodes/nodes.tsx @@ -28,7 +28,6 @@ import { TabLayout } from "../layout/tab-layout"; import { nodesStore } from "./nodes.store"; import { podsStore } from "../+workloads-pods/pods.store"; import { KubeObjectListLayout } from "../kube-object"; -import type { INodesRouteParams } from "./nodes.route"; import type { Node } from "../../api/endpoints/nodes.api"; import { LineProgress } from "../line-progress"; import { bytesToUnits } from "../../utils/convertMemory"; @@ -39,6 +38,7 @@ import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { Badge } from "../badge/badge"; import { kubeWatchApi } from "../../api/kube-watch-api"; import { eventStore } from "../+events/event.store"; +import type { NodesRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -53,7 +53,7 @@ enum columnId { status = "status", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+preferences/index.tsx b/src/renderer/components/+preferences/index.tsx index 182af1e6b8..11ee65ea78 100644 --- a/src/renderer/components/+preferences/index.tsx +++ b/src/renderer/components/+preferences/index.tsx @@ -19,5 +19,4 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./preferences.route"; export * from "./preferences"; diff --git a/src/renderer/components/+preferences/preferences.route.ts b/src/renderer/components/+preferences/preferences.route.ts deleted file mode 100644 index 1ae181a300..0000000000 --- a/src/renderer/components/+preferences/preferences.route.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright (c) 2021 OpenLens Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -import type { RouteProps } from "react-router"; -import { commandRegistry } from "../../../extensions/registries/command-registry"; -import { buildURL } from "../../../common/utils/buildUrl"; -import { navigate } from "../../navigation"; - -export const preferencesRoute: RouteProps = { - path: "/preferences" -}; - -export const preferencesURL = buildURL(preferencesRoute.path); - -commandRegistry.add({ - id: "app.showPreferences", - title: "Preferences: Open", - scope: "global", - action: () => navigate(preferencesURL()) -}); diff --git a/src/renderer/components/+storage-classes/index.ts b/src/renderer/components/+storage-classes/index.ts index 20cc9c1bd8..d4e62fa31b 100644 --- a/src/renderer/components/+storage-classes/index.ts +++ b/src/renderer/components/+storage-classes/index.ts @@ -19,7 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./storage-classes.route"; export * from "./storage-classes"; export * from "./storage-class-details"; - diff --git a/src/renderer/components/+storage-classes/storage-classes.tsx b/src/renderer/components/+storage-classes/storage-classes.tsx index f052e3e8ef..9ccfca9448 100644 --- a/src/renderer/components/+storage-classes/storage-classes.tsx +++ b/src/renderer/components/+storage-classes/storage-classes.tsx @@ -26,9 +26,9 @@ import type { RouteComponentProps } from "react-router-dom"; import { observer } from "mobx-react"; import type { StorageClass } from "../../api/endpoints/storage-class.api"; import { KubeObjectListLayout } from "../kube-object"; -import type { IStorageClassesRouteParams } from "./storage-classes.route"; import { storageClassStore } from "./storage-class.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { StorageClassesRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -38,7 +38,7 @@ enum columnId { reclaimPolicy = "reclaim", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+storage-volume-claims/index.ts b/src/renderer/components/+storage-volume-claims/index.ts index c5bf0dc16b..270126d49a 100644 --- a/src/renderer/components/+storage-volume-claims/index.ts +++ b/src/renderer/components/+storage-volume-claims/index.ts @@ -19,7 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./volume-claims.route"; export * from "./volume-claims"; export * from "./volume-claim-details"; - diff --git a/src/renderer/components/+storage-volume-claims/volume-claims.tsx b/src/renderer/components/+storage-volume-claims/volume-claims.tsx index 34309b43ec..c222405756 100644 --- a/src/renderer/components/+storage-volume-claims/volume-claims.tsx +++ b/src/renderer/components/+storage-volume-claims/volume-claims.tsx @@ -28,11 +28,11 @@ import { volumeClaimStore } from "./volume-claim.store"; import type { PersistentVolumeClaim } from "../../api/endpoints/persistent-volume-claims.api"; import { podsStore } from "../+workloads-pods/pods.store"; import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; -import type { IVolumeClaimsRouteParams } from "./volume-claims.route"; import { unitsToBytes } from "../../utils/convertMemory"; import { stopPropagation } from "../../utils"; import { storageClassApi } from "../../api/endpoints"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { VolumeClaimsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -44,7 +44,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+storage-volumes/index.ts b/src/renderer/components/+storage-volumes/index.ts index 73a697d7a0..5495c73c27 100644 --- a/src/renderer/components/+storage-volumes/index.ts +++ b/src/renderer/components/+storage-volumes/index.ts @@ -19,6 +19,5 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./volumes.route"; export * from "./volumes"; export * from "./volume-details"; diff --git a/src/renderer/components/+storage-volumes/volumes.tsx b/src/renderer/components/+storage-volumes/volumes.tsx index 2eb25dbdb3..8b60fc9afc 100644 --- a/src/renderer/components/+storage-volumes/volumes.tsx +++ b/src/renderer/components/+storage-volumes/volumes.tsx @@ -26,11 +26,11 @@ import { observer } from "mobx-react"; import { Link, RouteComponentProps } from "react-router-dom"; import type { PersistentVolume } from "../../api/endpoints/persistent-volume.api"; import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; -import type { IVolumesRouteParams } from "./volumes.route"; import { stopPropagation } from "../../utils"; import { volumesStore } from "./volumes.store"; import { pvcApi, storageClassApi } from "../../api/endpoints"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { VolumesRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -41,7 +41,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+storage/index.ts b/src/renderer/components/+storage/index.ts index 042fea4785..60e8c1b9cd 100644 --- a/src/renderer/components/+storage/index.ts +++ b/src/renderer/components/+storage/index.ts @@ -19,5 +19,4 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./storage.route"; export * from "./storage"; diff --git a/src/renderer/components/+storage/storage.tsx b/src/renderer/components/+storage/storage.tsx index 88a03db85d..3d4dd55ce3 100644 --- a/src/renderer/components/+storage/storage.tsx +++ b/src/renderer/components/+storage/storage.tsx @@ -24,44 +24,45 @@ import "./storage.scss"; import React from "react"; import { observer } from "mobx-react"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; -import { PersistentVolumes, volumesRoute, volumesURL } from "../+storage-volumes"; -import { StorageClasses, storageClassesRoute, storageClassesURL } from "../+storage-classes"; -import { PersistentVolumeClaims, volumeClaimsRoute, volumeClaimsURL } from "../+storage-volume-claims"; +import { PersistentVolumes } from "../+storage-volumes"; +import { StorageClasses } from "../+storage-classes"; +import { PersistentVolumeClaims } from "../+storage-volume-claims"; import { isAllowedResource } from "../../../common/rbac"; +import * as routes from "../../../common/routes"; @observer export class Storage extends React.Component { static get tabRoutes() { - const tabRoutes: TabLayoutRoute[] = []; + const tabs: TabLayoutRoute[] = []; if (isAllowedResource("persistentvolumeclaims")) { - tabRoutes.push({ + tabs.push({ title: "Persistent Volume Claims", component: PersistentVolumeClaims, - url: volumeClaimsURL(), - routePath: volumeClaimsRoute.path.toString(), + url: routes.volumeClaimsURL(), + routePath: routes.volumeClaimsRoute.path.toString(), }); } if (isAllowedResource("persistentvolumes")) { - tabRoutes.push({ + tabs.push({ title: "Persistent Volumes", component: PersistentVolumes, - url: volumesURL(), - routePath: volumesRoute.path.toString(), + url: routes.volumesURL(), + routePath: routes.volumesRoute.path.toString(), }); } if (isAllowedResource("storageclasses")) { - tabRoutes.push({ + tabs.push({ title: "Storage Classes", component: StorageClasses, - url: storageClassesURL(), - routePath: storageClassesRoute.path.toString(), + url: routes.storageClassesURL(), + routePath: routes.storageClassesRoute.path.toString(), }); } - return tabRoutes; + return tabs; } render() { diff --git a/src/renderer/components/+user-management/+cluster-role-bindings/view.tsx b/src/renderer/components/+user-management/+cluster-role-bindings/view.tsx index 03865ff562..2cf5b95037 100644 --- a/src/renderer/components/+user-management/+cluster-role-bindings/view.tsx +++ b/src/renderer/components/+user-management/+cluster-role-bindings/view.tsx @@ -27,11 +27,11 @@ import type { RouteComponentProps } from "react-router"; import type { ClusterRoleBinding } from "../../../api/endpoints"; import { KubeObjectListLayout } from "../../kube-object"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; -import type { ClusterRoleBindingsRouteParams } from "../user-management.route"; import { ClusterRoleBindingDialog } from "./dialog"; import { clusterRoleBindingsStore } from "./store"; import { clusterRolesStore } from "../+cluster-roles/store"; import { serviceAccountsStore } from "../+service-accounts/store"; +import type { ClusterRoleBindingsRouteParams } from "../../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+user-management/+cluster-roles/view.tsx b/src/renderer/components/+user-management/+cluster-roles/view.tsx index 43d8dedcbb..c58636e950 100644 --- a/src/renderer/components/+user-management/+cluster-roles/view.tsx +++ b/src/renderer/components/+user-management/+cluster-roles/view.tsx @@ -27,9 +27,9 @@ import type { RouteComponentProps } from "react-router"; import type { ClusterRole } from "../../../api/endpoints"; import { KubeObjectListLayout } from "../../kube-object"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; -import type { ClusterRolesRouteParams } from "../user-management.route"; import { AddClusterRoleDialog } from "./add-dialog"; import { clusterRolesStore } from "./store"; +import type { ClusterRolesRouteParams } from "../../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+user-management/+role-bindings/view.tsx b/src/renderer/components/+user-management/+role-bindings/view.tsx index bc1d4f42e5..fa32c599d6 100644 --- a/src/renderer/components/+user-management/+role-bindings/view.tsx +++ b/src/renderer/components/+user-management/+role-bindings/view.tsx @@ -26,12 +26,12 @@ import type { RouteComponentProps } from "react-router"; import type { RoleBinding } from "../../../api/endpoints"; import { KubeObjectListLayout } from "../../kube-object"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; -import type { RoleBindingsRouteParams } from "../user-management.route"; import { RoleBindingDialog } from "./dialog"; import { roleBindingsStore } from "./store"; import { rolesStore } from "../+roles/store"; import { clusterRolesStore } from "../+cluster-roles/store"; import { serviceAccountsStore } from "../+service-accounts/store"; +import type { RoleBindingsRouteParams } from "../../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+user-management/+roles/view.tsx b/src/renderer/components/+user-management/+roles/view.tsx index aa8bea346f..b6894b0571 100644 --- a/src/renderer/components/+user-management/+roles/view.tsx +++ b/src/renderer/components/+user-management/+roles/view.tsx @@ -27,9 +27,9 @@ import type { RouteComponentProps } from "react-router"; import type { Role } from "../../../api/endpoints"; import { KubeObjectListLayout } from "../../kube-object"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; -import type { RolesRouteParams } from "../user-management.route"; import { AddRoleDialog } from "./add-dialog"; import { rolesStore } from "./store"; +import type { RolesRouteParams } from "../../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+user-management/+service-accounts/view.tsx b/src/renderer/components/+user-management/+service-accounts/view.tsx index 442fbe3d77..37ded42ae5 100644 --- a/src/renderer/components/+user-management/+service-accounts/view.tsx +++ b/src/renderer/components/+user-management/+service-accounts/view.tsx @@ -24,7 +24,6 @@ import "./view.scss"; import { observer } from "mobx-react"; import React from "react"; import type { RouteComponentProps } from "react-router"; -import type { ServiceAccountsRouteParams } from "../user-management.route"; import { kubeObjectMenuRegistry } from "../../../../extensions/registries/kube-object-menu-registry"; import type { ServiceAccount } from "../../../api/endpoints/service-accounts.api"; import { Icon } from "../../icon"; @@ -35,6 +34,7 @@ import { openServiceAccountKubeConfig } from "../../kubeconfig-dialog"; import { MenuItem } from "../../menu"; import { CreateServiceAccountDialog } from "./create-dialog"; import { serviceAccountsStore } from "./store"; +import type { ServiceAccountsRouteParams } from "../../../../common/routes"; enum columnId { name = "name", diff --git a/src/renderer/components/+user-management/index.ts b/src/renderer/components/+user-management/index.ts index 0bdffbed1f..06afee0efa 100644 --- a/src/renderer/components/+user-management/index.ts +++ b/src/renderer/components/+user-management/index.ts @@ -20,4 +20,3 @@ */ export * from "./user-management"; -export * from "./user-management.route"; diff --git a/src/renderer/components/+user-management/user-management.tsx b/src/renderer/components/+user-management/user-management.tsx index c714f34525..3c7e042cd5 100644 --- a/src/renderer/components/+user-management/user-management.tsx +++ b/src/renderer/components/+user-management/user-management.tsx @@ -21,31 +21,17 @@ import "./user-management.scss"; -import { observer } from "mobx-react"; import React from "react"; - +import { observer } from "mobx-react"; +import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; import { PodSecurityPolicies } from "../+pod-security-policies"; import { isAllowedResource } from "../../../common/rbac"; -import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; -import { ClusterRoles } from "./+cluster-roles"; +import * as routes from "../../../common/routes"; import { ClusterRoleBindings } from "./+cluster-role-bindings"; +import { ServiceAccounts } from "./+service-accounts"; import { Roles } from "./+roles"; import { RoleBindings } from "./+role-bindings"; -import { ServiceAccounts } from "./+service-accounts"; -import { - clusterRoleBindingsRoute, - clusterRoleBindingsURL, - clusterRolesRoute, - clusterRolesURL, - podSecurityPoliciesRoute, - podSecurityPoliciesURL, - roleBindingsRoute, - roleBindingsURL, - rolesRoute, - rolesURL, - serviceAccountsRoute, - serviceAccountsURL, -} from "./user-management.route"; +import { ClusterRoles } from "./+cluster-roles"; @observer export class UserManagement extends React.Component { @@ -56,8 +42,8 @@ export class UserManagement extends React.Component { tabRoutes.push({ title: "Service Accounts", component: ServiceAccounts, - url: serviceAccountsURL(), - routePath: serviceAccountsRoute.path.toString(), + url: routes.serviceAccountsURL(), + routePath: routes.serviceAccountsRoute.path.toString(), }); } @@ -65,8 +51,8 @@ export class UserManagement extends React.Component { tabRoutes.push({ title: "Cluster Roles", component: ClusterRoles, - url: clusterRolesURL(), - routePath: clusterRolesRoute.path.toString(), + url: routes.clusterRolesURL(), + routePath: routes.clusterRolesRoute.path.toString(), }); } @@ -74,8 +60,8 @@ export class UserManagement extends React.Component { tabRoutes.push({ title: "Roles", component: Roles, - url: rolesURL(), - routePath: rolesRoute.path.toString(), + url: routes.rolesURL(), + routePath: routes.rolesRoute.path.toString(), }); } @@ -83,8 +69,8 @@ export class UserManagement extends React.Component { tabRoutes.push({ title: "Cluster Role Bindings", component: ClusterRoleBindings, - url: clusterRoleBindingsURL(), - routePath: clusterRoleBindingsRoute.path.toString(), + url: routes.clusterRoleBindingsURL(), + routePath: routes.clusterRoleBindingsRoute.path.toString(), }); } @@ -92,8 +78,8 @@ export class UserManagement extends React.Component { tabRoutes.push({ title: "Role Bindings", component: RoleBindings, - url: roleBindingsURL(), - routePath: roleBindingsRoute.path.toString(), + url: routes.roleBindingsURL(), + routePath: routes.roleBindingsRoute.path.toString(), }); } @@ -101,8 +87,8 @@ export class UserManagement extends React.Component { tabRoutes.push({ title: "Pod Security Policies", component: PodSecurityPolicies, - url: podSecurityPoliciesURL(), - routePath: podSecurityPoliciesRoute.path.toString(), + url: routes.podSecurityPoliciesURL(), + routePath: routes.podSecurityPoliciesRoute.path.toString(), }); } diff --git a/src/renderer/components/+welcome/index.ts b/src/renderer/components/+welcome/index.ts index b905153b68..8465266d6e 100644 --- a/src/renderer/components/+welcome/index.ts +++ b/src/renderer/components/+welcome/index.ts @@ -20,4 +20,3 @@ */ export * from "./welcome"; -export * from "./welcome.route"; diff --git a/src/renderer/components/+welcome/welcome.tsx b/src/renderer/components/+welcome/welcome.tsx index 071d7bbaba..6157798942 100644 --- a/src/renderer/components/+welcome/welcome.tsx +++ b/src/renderer/components/+welcome/welcome.tsx @@ -26,8 +26,7 @@ import { Icon } from "../icon"; import { productName, slackUrl } from "../../../common/vars"; import { welcomeMenuRegistry } from "../../../extensions/registries"; import { navigate } from "../../navigation"; -import { catalogURL } from "../+catalog"; -import { preferencesURL } from "../+preferences"; +import { catalogURL, preferencesURL } from "../../../common/routes"; @observer export class Welcome extends React.Component { diff --git a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx index 04560aa197..64690422d0 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx +++ b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx @@ -31,13 +31,13 @@ import { cronJobStore } from "./cronjob.store"; import { jobStore } from "../+workloads-jobs/job.store"; import { eventStore } from "../+events/event.store"; import type { KubeObjectMenuProps } from "../kube-object/kube-object-menu"; -import type { ICronJobsRouteParams } from "../+workloads"; import { KubeObjectListLayout } from "../kube-object"; import { CronJobTriggerDialog } from "./cronjob-trigger-dialog"; import { kubeObjectMenuRegistry } from "../../../extensions/registries/kube-object-menu-registry"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { ConfirmDialog } from "../confirm-dialog/confirm-dialog"; import { Notifications } from "../notifications/notifications"; +import type { CronJobsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -49,7 +49,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads-daemonsets/daemonsets.tsx b/src/renderer/components/+workloads-daemonsets/daemonsets.tsx index b256ac1f62..e22c310e3d 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonsets.tsx +++ b/src/renderer/components/+workloads-daemonsets/daemonsets.tsx @@ -30,9 +30,9 @@ import { daemonSetStore } from "./daemonsets.store"; import { podsStore } from "../+workloads-pods/pods.store"; import { nodesStore } from "../+nodes/nodes.store"; import { KubeObjectListLayout } from "../kube-object"; -import type { IDaemonSetsRouteParams } from "../+workloads"; import { Badge } from "../badge"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { DaemonSetsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -42,7 +42,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads-deployments/deployments.tsx b/src/renderer/components/+workloads-deployments/deployments.tsx index 74ddb08fcb..6bca45c864 100644 --- a/src/renderer/components/+workloads-deployments/deployments.tsx +++ b/src/renderer/components/+workloads-deployments/deployments.tsx @@ -36,13 +36,13 @@ import { podsStore } from "../+workloads-pods/pods.store"; import { nodesStore } from "../+nodes/nodes.store"; import { eventStore } from "../+events/event.store"; import { KubeObjectListLayout } from "../kube-object"; -import type { IDeploymentsRouteParams } from "../+workloads"; import { cssNames } from "../../utils"; import kebabCase from "lodash/kebabCase"; import orderBy from "lodash/orderBy"; import { kubeObjectMenuRegistry } from "../../../extensions/registries/kube-object-menu-registry"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { Notifications } from "../notifications"; +import type { DeploymentsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -53,7 +53,7 @@ enum columnId { condition = "condition", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads-jobs/jobs.tsx b/src/renderer/components/+workloads-jobs/jobs.tsx index bcc9b85efe..9d0c46764f 100644 --- a/src/renderer/components/+workloads-jobs/jobs.tsx +++ b/src/renderer/components/+workloads-jobs/jobs.tsx @@ -29,9 +29,9 @@ import { jobStore } from "./job.store"; import { eventStore } from "../+events/event.store"; import type { Job } from "../../api/endpoints/job.api"; import { KubeObjectListLayout } from "../kube-object"; -import type { IJobsRouteParams } from "../+workloads"; import kebabCase from "lodash/kebabCase"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { JobsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -41,7 +41,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads-overview/overview-statuses.tsx b/src/renderer/components/+workloads-overview/overview-statuses.tsx index 21ae379b69..ae67d96667 100644 --- a/src/renderer/components/+workloads-overview/overview-statuses.tsx +++ b/src/renderer/components/+workloads-overview/overview-statuses.tsx @@ -25,12 +25,13 @@ import React from "react"; import { observer } from "mobx-react"; import { OverviewWorkloadStatus } from "./overview-workload-status"; import { Link } from "react-router-dom"; -import { workloadURL, workloadStores } from "../+workloads"; +import { workloadStores } from "../+workloads"; import { namespaceStore } from "../+namespaces/namespace.store"; import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter"; import { isAllowedResource, KubeResource } from "../../../common/rbac"; import { ResourceNames } from "../../utils/rbac"; import { boundMethod } from "../../utils"; +import { workloadURL } from "../../../common/routes"; const resources: KubeResource[] = [ "pods", diff --git a/src/renderer/components/+workloads-overview/overview.tsx b/src/renderer/components/+workloads-overview/overview.tsx index 24331d63a7..e892539778 100644 --- a/src/renderer/components/+workloads-overview/overview.tsx +++ b/src/renderer/components/+workloads-overview/overview.tsx @@ -25,7 +25,6 @@ import React from "react"; import { disposeOnUnmount, observer } from "mobx-react"; import { OverviewStatuses } from "./overview-statuses"; import type { RouteComponentProps } from "react-router"; -import type { IWorkloadsOverviewRouteParams } from "../+workloads"; import { eventStore } from "../+events/event.store"; import { podsStore } from "../+workloads-pods/pods.store"; import { deploymentStore } from "../+workloads-deployments/deployments.store"; @@ -39,8 +38,9 @@ import { isAllowedResource } from "../../../common/rbac"; import { kubeWatchApi } from "../../api/kube-watch-api"; import { clusterContext } from "../context"; import { workloadsOverviewDetailRegistry } from "../../../extensions/registries"; +import type { WorkloadsOverviewRouteParams } from "../../../common/routes"; -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads-pods/pods.tsx b/src/renderer/components/+workloads-pods/pods.tsx index be5cbf8852..807d531b20 100644 --- a/src/renderer/components/+workloads-pods/pods.tsx +++ b/src/renderer/components/+workloads-pods/pods.tsx @@ -27,7 +27,6 @@ import { Link } from "react-router-dom"; import { podsStore } from "./pods.store"; import type { RouteComponentProps } from "react-router"; import { volumeClaimStore } from "../+storage-volume-claims/volume-claim.store"; -import type { IPodsRouteParams } from "../+workloads"; import { eventStore } from "../+events/event.store"; import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; import { nodesApi, Pod } from "../../api/endpoints"; @@ -39,6 +38,7 @@ import kebabCase from "lodash/kebabCase"; import { lookupApiLink } from "../../api/kube-api"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { Badge } from "../badge"; +import type { PodsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -52,7 +52,7 @@ enum columnId { status = "status", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads-replicasets/replicasets.tsx b/src/renderer/components/+workloads-replicasets/replicasets.tsx index ffc75ead0e..30aebb6efa 100644 --- a/src/renderer/components/+workloads-replicasets/replicasets.tsx +++ b/src/renderer/components/+workloads-replicasets/replicasets.tsx @@ -28,12 +28,12 @@ import type { KubeObjectMenuProps } from "../kube-object/kube-object-menu"; import { replicaSetStore } from "./replicasets.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { RouteComponentProps } from "react-router"; -import type { IReplicaSetsRouteParams } from "../+workloads/workloads.route"; import { KubeObjectListLayout } from "../kube-object/kube-object-list-layout"; import { MenuItem } from "../menu/menu"; import { Icon } from "../icon/icon"; import { kubeObjectMenuRegistry } from "../../../extensions/registries/kube-object-menu-registry"; import { ReplicaSetScaleDialog } from "./replicaset-scale-dialog"; +import type { ReplicaSetsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -44,7 +44,7 @@ enum columnId { age = "age", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads-statefulsets/statefulsets.tsx b/src/renderer/components/+workloads-statefulsets/statefulsets.tsx index 59b208cccf..3340c30381 100644 --- a/src/renderer/components/+workloads-statefulsets/statefulsets.tsx +++ b/src/renderer/components/+workloads-statefulsets/statefulsets.tsx @@ -31,12 +31,12 @@ import { nodesStore } from "../+nodes/nodes.store"; import { eventStore } from "../+events/event.store"; import type { KubeObjectMenuProps } from "../kube-object/kube-object-menu"; import { KubeObjectListLayout } from "../kube-object"; -import type { IStatefulSetsRouteParams } from "../+workloads"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { StatefulSetScaleDialog } from "./statefulset-scale-dialog"; import { MenuItem } from "../menu/menu"; import { Icon } from "../icon/icon"; import { kubeObjectMenuRegistry } from "../../../extensions/registries/kube-object-menu-registry"; +import type { StatefulSetsRouteParams } from "../../../common/routes"; enum columnId { name = "name", @@ -46,7 +46,7 @@ enum columnId { replicas = "replicas", } -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/+workloads/index.ts b/src/renderer/components/+workloads/index.ts index f094bb5ff3..4e0e932a51 100644 --- a/src/renderer/components/+workloads/index.ts +++ b/src/renderer/components/+workloads/index.ts @@ -19,7 +19,6 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./workloads.route"; export * from "./workloads"; export * from "./workloads.stores"; export * from "./workloads.command"; diff --git a/src/renderer/components/+workloads/workloads.command.ts b/src/renderer/components/+workloads/workloads.command.ts index b09308d113..2cc8895714 100644 --- a/src/renderer/components/+workloads/workloads.command.ts +++ b/src/renderer/components/+workloads/workloads.command.ts @@ -21,46 +21,46 @@ import { navigate } from "../../navigation"; import { commandRegistry } from "../../../extensions/registries/command-registry"; -import { cronJobsURL, daemonSetsURL, deploymentsURL, jobsURL, podsURL, statefulSetsURL } from "./workloads.route"; +import * as routes from "../../../common/routes"; commandRegistry.add({ id: "cluster.viewPods", title: "Cluster: View Pods", scope: "entity", - action: () => navigate(podsURL()) + action: () => navigate(routes.podsURL()) }); commandRegistry.add({ id: "cluster.viewDeployments", title: "Cluster: View Deployments", scope: "entity", - action: () => navigate(deploymentsURL()) + action: () => navigate(routes.deploymentsURL()) }); commandRegistry.add({ id: "cluster.viewDaemonSets", title: "Cluster: View DaemonSets", scope: "entity", - action: () => navigate(daemonSetsURL()) + action: () => navigate(routes.daemonSetsURL()) }); commandRegistry.add({ id: "cluster.viewStatefulSets", title: "Cluster: View StatefulSets", scope: "entity", - action: () => navigate(statefulSetsURL()) + action: () => navigate(routes.statefulSetsURL()) }); commandRegistry.add({ id: "cluster.viewJobs", title: "Cluster: View Jobs", scope: "entity", - action: () => navigate(jobsURL()) + action: () => navigate(routes.jobsURL()) }); commandRegistry.add({ id: "cluster.viewCronJobs", title: "Cluster: View CronJobs", scope: "entity", - action: () => navigate(cronJobsURL()) + action: () => navigate(routes.cronJobsURL()) }); diff --git a/src/renderer/components/+workloads/workloads.tsx b/src/renderer/components/+workloads/workloads.tsx index b0c44fd93e..5f8724b928 100644 --- a/src/renderer/components/+workloads/workloads.tsx +++ b/src/renderer/components/+workloads/workloads.tsx @@ -25,7 +25,6 @@ import React from "react"; import { observer } from "mobx-react"; import { TabLayout, TabLayoutRoute } from "../layout/tab-layout"; import { WorkloadsOverview } from "../+workloads-overview/overview"; -import { cronJobsRoute, cronJobsURL, daemonSetsRoute, daemonSetsURL, deploymentsRoute, deploymentsURL, jobsRoute, jobsURL, overviewRoute, overviewURL, podsRoute, podsURL, replicaSetsRoute, replicaSetsURL, statefulSetsRoute, statefulSetsURL } from "./workloads.route"; import { Pods } from "../+workloads-pods"; import { Deployments } from "../+workloads-deployments"; import { DaemonSets } from "../+workloads-daemonsets"; @@ -34,83 +33,84 @@ import { Jobs } from "../+workloads-jobs"; import { CronJobs } from "../+workloads-cronjobs"; import { isAllowedResource } from "../../../common/rbac"; import { ReplicaSets } from "../+workloads-replicasets"; +import * as routes from "../../../common/routes"; @observer export class Workloads extends React.Component { static get tabRoutes(): TabLayoutRoute[] { - const routes: TabLayoutRoute[] = [ + const tabs: TabLayoutRoute[] = [ { title: "Overview", component: WorkloadsOverview, - url: overviewURL(), - routePath: overviewRoute.path.toString() + url: routes.overviewURL(), + routePath: routes.overviewRoute.path.toString() } ]; if (isAllowedResource("pods")) { - routes.push({ + tabs.push({ title: "Pods", component: Pods, - url: podsURL(), - routePath: podsRoute.path.toString() + url: routes.podsURL(), + routePath: routes.podsRoute.path.toString() }); } if (isAllowedResource("deployments")) { - routes.push({ + tabs.push({ title: "Deployments", component: Deployments, - url: deploymentsURL(), - routePath: deploymentsRoute.path.toString(), + url: routes.deploymentsURL(), + routePath: routes.deploymentsRoute.path.toString(), }); } if (isAllowedResource("daemonsets")) { - routes.push({ + tabs.push({ title: "DaemonSets", component: DaemonSets, - url: daemonSetsURL(), - routePath: daemonSetsRoute.path.toString(), + url: routes.daemonSetsURL(), + routePath: routes.daemonSetsRoute.path.toString(), }); } if (isAllowedResource("statefulsets")) { - routes.push({ + tabs.push({ title: "StatefulSets", component: StatefulSets, - url: statefulSetsURL(), - routePath: statefulSetsRoute.path.toString(), + url: routes.statefulSetsURL(), + routePath: routes.statefulSetsRoute.path.toString(), }); } if (isAllowedResource("replicasets")) { - routes.push({ + tabs.push({ title: "ReplicaSets", component: ReplicaSets, - url: replicaSetsURL(), - routePath: replicaSetsRoute.path.toString(), + url: routes.replicaSetsURL(), + routePath: routes.replicaSetsRoute.path.toString(), }); } if (isAllowedResource("jobs")) { - routes.push({ + tabs.push({ title: "Jobs", component: Jobs, - url: jobsURL(), - routePath: jobsRoute.path.toString(), + url: routes.jobsURL(), + routePath: routes.jobsRoute.path.toString(), }); } if (isAllowedResource("cronjobs")) { - routes.push({ + tabs.push({ title: "CronJobs", component: CronJobs, - url: cronJobsURL(), - routePath: cronJobsRoute.path.toString(), + url: routes.cronJobsURL(), + routePath: routes.cronJobsRoute.path.toString(), }); } - return routes; + return tabs; } render() { diff --git a/src/renderer/components/app.tsx b/src/renderer/components/app.tsx index cde061b1aa..0f9ca747c1 100755 --- a/src/renderer/components/app.tsx +++ b/src/renderer/components/app.tsx @@ -23,32 +23,15 @@ import { observable, makeObservable } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { Redirect, Route, Router, Switch } from "react-router"; import { history } from "../navigation"; -import { Notifications } from "./notifications"; import { NotFound } from "./+404"; import { UserManagement } from "./+user-management/user-management"; import { ConfirmDialog } from "./confirm-dialog"; -import { usersManagementRoute } from "./+user-management/user-management.route"; -import { clusterRoute, clusterURL } from "./+cluster"; -import { KubeConfigDialog } from "./kubeconfig-dialog/kubeconfig-dialog"; -import { Nodes, nodesRoute } from "./+nodes"; -import { Workloads, workloadsRoute, workloadsURL } from "./+workloads"; -import { Namespaces, namespacesRoute } from "./+namespaces"; -import { Network, networkRoute } from "./+network"; -import { Storage, storageRoute } from "./+storage"; import { ClusterOverview } from "./+cluster/cluster-overview"; -import { Config, configRoute } from "./+config"; import { Events } from "./+events/events"; -import { eventRoute } from "./+events"; -import { Apps, appsRoute } from "./+apps"; -import { KubeObjectDetails } from "./kube-object/kube-object-details"; import { DeploymentScaleDialog } from "./+workloads-deployments/deployment-scale-dialog"; import { CronJobTriggerDialog } from "./+workloads-cronjobs/cronjob-trigger-dialog"; import { CustomResources } from "./+custom-resources/custom-resources"; -import { crdRoute } from "./+custom-resources"; import { isAllowedResource } from "../../common/rbac"; -import { MainLayout } from "./layout/main-layout"; -import { ErrorBoundary } from "./error-boundary"; -import { Terminal } from "./dock/terminal"; import { getHostedCluster, getHostedClusterId } from "../../common/cluster-store"; import logger from "../../main/logger"; import { webFrame } from "electron"; @@ -59,7 +42,6 @@ import { requestMain } from "../../common/ipc"; import whatInput from "what-input"; import { clusterSetFrameIdHandler } from "../../common/cluster-ipc"; import { ClusterPageMenuRegistration, clusterPageMenuRegistry } from "../../extensions/registries"; -import { TabLayout, TabLayoutRoute } from "./layout/tab-layout"; import { StatefulSetScaleDialog } from "./+workloads-statefulsets/statefulset-scale-dialog"; import { eventStore } from "./+events/event.store"; import { nodesStore } from "./+nodes/nodes.store"; @@ -69,9 +51,24 @@ import { ReplicaSetScaleDialog } from "./+workloads-replicasets/replicaset-scale import { CommandContainer } from "./command-palette/command-container"; import { KubeObjectStore } from "../kube-object.store"; import { clusterContext } from "./context"; +import * as routes from "../../common/routes"; +import { TabLayout, TabLayoutRoute } from "./layout/tab-layout"; +import { ErrorBoundary } from "./error-boundary"; +import { MainLayout } from "./layout/main-layout"; +import { Notifications } from "./notifications"; +import { KubeObjectDetails } from "./kube-object"; +import { KubeConfigDialog } from "./kubeconfig-dialog"; +import { Terminal } from "./dock/terminal"; import { namespaceStore } from "./+namespaces/namespace.store"; import { Sidebar } from "./layout/sidebar"; import { Dock } from "./dock"; +import { Apps } from "./+apps"; +import { Namespaces } from "./+namespaces"; +import { Network } from "./+network"; +import { Nodes } from "./+nodes"; +import { Workloads } from "./+workloads"; +import { Config } from "./+config"; +import { Storage } from "./+storage"; @observer export class App extends React.Component { @@ -117,7 +114,7 @@ export class App extends React.Component { ]); } - @observable startUrl = isAllowedResource(["events", "nodes", "pods"]) ? clusterURL() : workloadsURL(); + @observable startUrl = isAllowedResource(["events", "nodes", "pods"]) ? routes.clusterURL() : routes.workloadsURL(); getTabLayoutRoutes(menuItem: ClusterPageMenuRegistration) { const routes: TabLayoutRoute[] = []; @@ -179,17 +176,17 @@ export class App extends React.Component { } footer={}> - - - - - - - - - - - + + + + + + + + + + + {this.renderExtensionTabLayoutRoutes()} {this.renderExtensionRoutes()} diff --git a/src/renderer/components/cluster-manager/bottom-bar.tsx b/src/renderer/components/cluster-manager/bottom-bar.tsx index 32f56d0f78..19c2379824 100644 --- a/src/renderer/components/cluster-manager/bottom-bar.tsx +++ b/src/renderer/components/cluster-manager/bottom-bar.tsx @@ -25,8 +25,8 @@ import React from "react"; import { observer } from "mobx-react"; import { StatusBarRegistration, statusBarRegistry } from "../../../extensions/registries"; import { navigate } from "../../navigation"; -import { catalogURL } from "../+catalog"; import { Icon } from "../icon"; +import { catalogURL } from "../../../common/routes"; @observer export class BottomBar extends React.Component { diff --git a/src/renderer/components/cluster-manager/cluster-manager.tsx b/src/renderer/components/cluster-manager/cluster-manager.tsx index a43ccb527a..2fc4d1d2a9 100644 --- a/src/renderer/components/cluster-manager/cluster-manager.tsx +++ b/src/renderer/components/cluster-manager/cluster-manager.tsx @@ -25,16 +25,16 @@ import React from "react"; import { Redirect, Route, Switch } from "react-router"; import { observer } from "mobx-react"; import { BottomBar } from "./bottom-bar"; -import { Catalog, catalogRoute } from "../+catalog"; -import { Preferences, preferencesRoute } from "../+preferences"; -import { AddCluster, addClusterRoute } from "../+add-cluster"; +import { Catalog } from "../+catalog"; +import { Preferences } from "../+preferences"; +import { AddCluster } from "../+add-cluster"; import { ClusterView } from "./cluster-view"; -import { clusterViewRoute } from "./cluster-view.route"; import { globalPageRegistry } from "../../../extensions/registries/page-registry"; -import { Extensions, extensionsRoute } from "../+extensions"; +import { Extensions } from "../+extensions"; import { HotbarMenu } from "../hotbar/hotbar-menu"; -import { EntitySettings, entitySettingsRoute } from "../+entity-settings"; -import { Welcome, welcomeRoute, welcomeURL } from "../+welcome"; +import { EntitySettings } from "../+entity-settings"; +import { Welcome } from "../+welcome"; +import * as routes from "../../../common/routes"; @observer export class ClusterManager extends React.Component { @@ -44,20 +44,20 @@ export class ClusterManager extends React.Component {

- - - - - - - + + + + + + + { globalPageRegistry.getItems() .map(({ url, components: { Page } }) => ( )) } - +
diff --git a/src/renderer/components/cluster-manager/cluster-status.tsx b/src/renderer/components/cluster-manager/cluster-status.tsx index c821f2874e..2257f94df6 100644 --- a/src/renderer/components/cluster-manager/cluster-status.tsx +++ b/src/renderer/components/cluster-manager/cluster-status.tsx @@ -35,7 +35,7 @@ import { Icon } from "../icon"; import { CubeSpinner } from "../spinner"; import type { KubeAuthProxyLog } from "../../../main/kube-auth-proxy"; import { navigate } from "../../navigation"; -import { entitySettingsURL } from "../+entity-settings"; +import { entitySettingsURL } from "../../../common/routes"; interface Props { className?: IClassName; diff --git a/src/renderer/components/cluster-manager/cluster-topbar.tsx b/src/renderer/components/cluster-manager/cluster-topbar.tsx index af49194056..df2e3e8945 100644 --- a/src/renderer/components/cluster-manager/cluster-topbar.tsx +++ b/src/renderer/components/cluster-manager/cluster-topbar.tsx @@ -20,7 +20,7 @@ */ import React from "react"; -import { catalogURL } from "../+catalog"; +import { catalogURL } from "../../../common/routes"; import type { Cluster } from "../../../main/cluster"; import { navigate } from "../../navigation"; import { Icon } from "../icon"; diff --git a/src/renderer/components/cluster-manager/cluster-view.tsx b/src/renderer/components/cluster-manager/cluster-view.tsx index f1530032e3..59b047abbb 100644 --- a/src/renderer/components/cluster-manager/cluster-view.tsx +++ b/src/renderer/components/cluster-manager/cluster-view.tsx @@ -23,6 +23,7 @@ import "./cluster-view.scss"; import React from "react"; import { computed, makeObservable, reaction } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; +import type { RouteComponentProps } from "react-router"; import { ClusterStatus } from "./cluster-status"; import { hasLoadedView, initView, refreshViews } from "./lens-views"; import type { Cluster } from "../../../main/cluster"; @@ -31,12 +32,10 @@ import { requestMain } from "../../../common/ipc"; import { clusterActivateHandler } from "../../../common/cluster-ipc"; import { catalogEntityRegistry } from "../../api/catalog-entity-registry"; import { navigate } from "../../navigation"; -import { catalogURL } from "../+catalog/catalog.route"; import { ClusterTopbar } from "./cluster-topbar"; -import type { RouteComponentProps } from "react-router-dom"; -import type { IClusterViewRouteParams } from "./cluster-view.route"; +import { catalogURL, ClusterViewRouteParams } from "../../../common/routes"; -interface Props extends RouteComponentProps { +interface Props extends RouteComponentProps { } @observer diff --git a/src/renderer/components/cluster-settings/cluster-settings.command.ts b/src/renderer/components/cluster-settings/cluster-settings.command.ts index a7265bcf3c..90c0870eeb 100644 --- a/src/renderer/components/cluster-settings/cluster-settings.command.ts +++ b/src/renderer/components/cluster-settings/cluster-settings.command.ts @@ -21,8 +21,8 @@ import { navigate } from "../../navigation"; import { commandRegistry } from "../../../extensions/registries/command-registry"; -import { entitySettingsURL } from "../+entity-settings"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; +import { entitySettingsURL } from "../../../common/routes"; commandRegistry.add({ id: "cluster.viewCurrentClusterSettings", diff --git a/src/renderer/components/command-palette/command-dialog.tsx b/src/renderer/components/command-palette/command-dialog.tsx index 6049c23de9..ce718ce961 100644 --- a/src/renderer/components/command-palette/command-dialog.tsx +++ b/src/renderer/components/command-palette/command-dialog.tsx @@ -28,9 +28,9 @@ import { commandRegistry } from "../../../extensions/registries/command-registry import { CommandOverlay } from "./command-container"; import { broadcastMessage } from "../../../common/ipc"; import { navigate } from "../../navigation"; -import { clusterViewURL } from "../cluster-manager/cluster-view.route"; import { catalogEntityRegistry } from "../../api/catalog-entity-registry"; import type { CatalogEntity } from "../../../common/catalog"; +import { clusterViewURL } from "../../../common/routes"; @observer export class CommandDialog extends React.Component { diff --git a/src/renderer/components/dock/install-chart.tsx b/src/renderer/components/dock/install-chart.tsx index 7bed6bdbf2..69e0313eec 100644 --- a/src/renderer/components/dock/install-chart.tsx +++ b/src/renderer/components/dock/install-chart.tsx @@ -33,13 +33,13 @@ import { IChartInstallData, installChartStore } from "./install-chart.store"; import { Spinner } from "../spinner"; import { Icon } from "../icon"; import { Button } from "../button"; -import { releaseURL } from "../+apps-releases"; import { releaseStore } from "../+apps-releases/release.store"; import { LogsDialog } from "../dialog/logs-dialog"; import { Select, SelectOption } from "../select"; import { Input } from "../input"; import { EditorPanel } from "./editor-panel"; import { navigate } from "../../navigation"; +import { releaseURL } from "../../../common/routes"; interface Props { tab: IDockTab; diff --git a/src/renderer/components/layout/sidebar.tsx b/src/renderer/components/layout/sidebar.tsx index 6ecc9b8df9..7cbe3ba702 100644 --- a/src/renderer/components/layout/sidebar.tsx +++ b/src/renderer/components/layout/sidebar.tsx @@ -26,28 +26,20 @@ import React from "react"; import { observer } from "mobx-react"; import { cssNames } from "../../utils"; import { Icon } from "../icon"; -import { workloadsRoute, workloadsURL } from "../+workloads/workloads.route"; -import { namespacesRoute, namespacesURL } from "../+namespaces/namespaces.route"; -import { nodesRoute, nodesURL } from "../+nodes/nodes.route"; -import { usersManagementRoute, usersManagementURL } from "../+user-management/user-management.route"; -import { networkRoute, networkURL } from "../+network/network.route"; -import { storageRoute, storageURL } from "../+storage/storage.route"; -import { clusterRoute, clusterURL } from "../+cluster"; -import { Config, configRoute, configURL } from "../+config"; -import { eventRoute, eventsURL } from "../+events"; -import { Apps, appsRoute, appsURL } from "../+apps"; import { Workloads } from "../+workloads"; import { UserManagement } from "../+user-management"; import { Storage } from "../+storage"; import { Network } from "../+network"; import { crdStore } from "../+custom-resources/crd.store"; -import { crdRoute, crdURL } from "../+custom-resources"; import { CustomResources } from "../+custom-resources/custom-resources"; import { isActiveRoute } from "../../navigation"; import { isAllowedResource } from "../../../common/rbac"; import { Spinner } from "../spinner"; import { ClusterPageMenuRegistration, clusterPageMenuRegistry, clusterPageRegistry, getExtensionPageUrl } from "../../../extensions/registries"; import { SidebarItem } from "./sidebar-item"; +import { Apps } from "../+apps"; +import * as routes from "../../../common/routes"; +import { Config } from "../+config"; interface Props { className?: string; @@ -72,7 +64,7 @@ export class Sidebar extends React.Component { return Object.entries(crdStore.groups).map(([group, crds]) => { const id = `crd-group:${group}`; - const crdGroupsPageUrl = crdURL({ query: { groups: group } }); + const crdGroupsPageUrl = routes.crdURL({ query: { groups: group } }); return ( @@ -178,25 +170,25 @@ export class Sidebar extends React.Component { } /> } /> } > {this.renderTreeFromTabRoutes(Workloads.tabRoutes)} @@ -204,9 +196,9 @@ export class Sidebar extends React.Component { } > {this.renderTreeFromTabRoutes(Config.tabRoutes)} @@ -214,9 +206,9 @@ export class Sidebar extends React.Component { } > {this.renderTreeFromTabRoutes(Network.tabRoutes)} @@ -224,9 +216,9 @@ export class Sidebar extends React.Component { } > {this.renderTreeFromTabRoutes(Storage.tabRoutes)} @@ -234,24 +226,24 @@ export class Sidebar extends React.Component { } /> } /> } > {this.renderTreeFromTabRoutes(Apps.tabRoutes)} @@ -259,9 +251,9 @@ export class Sidebar extends React.Component { } > {this.renderTreeFromTabRoutes(UserManagement.tabRoutes)} @@ -269,8 +261,8 @@ export class Sidebar extends React.Component { } > diff --git a/src/renderer/ipc/index.tsx b/src/renderer/ipc/index.tsx index 5ae4b48aad..3f1f7508cf 100644 --- a/src/renderer/ipc/index.tsx +++ b/src/renderer/ipc/index.tsx @@ -28,7 +28,7 @@ import { isMac } from "../../common/vars"; import { invalidKubeconfigHandler } from "./invalid-kubeconfig-handler"; import { ClusterStore } from "../../common/cluster-store"; import { navigate } from "../navigation"; -import { entitySettingsURL } from "../components/+entity-settings"; +import { entitySettingsURL } from "../../common/routes"; function sendToBackchannel(backchannel: string, notificationId: string, data: BackchannelArg): void { notificationsStore.remove(notificationId); diff --git a/src/renderer/navigation/helpers.ts b/src/renderer/navigation/helpers.ts index d7b307f4c8..5b11232bb0 100644 --- a/src/renderer/navigation/helpers.ts +++ b/src/renderer/navigation/helpers.ts @@ -22,9 +22,9 @@ import type { LocationDescriptor } from "history"; import { createPath } from "history"; import { matchPath, RouteProps } from "react-router"; -import { PageParam, PageParamInit } from "./page-param"; -import { clusterViewRoute, IClusterViewRouteParams } from "../components/cluster-manager/cluster-view.route"; import { navigation } from "./history"; +import { ClusterViewRouteParams, clusterViewRoute } from "../../common/routes"; +import { PageParam, PageParamInit } from "./page-param"; export function navigate(location: LocationDescriptor) { const currentLocation = createPath(navigation.location); @@ -51,7 +51,7 @@ export function isActiveRoute(route: string | string[] | RouteProps): boolean { } export function getMatchedClusterId(): string { - const matched = matchPath(navigation.location.pathname, { + const matched = matchPath(navigation.location.pathname, { exact: true, path: clusterViewRoute.path }); diff --git a/src/renderer/protocol-handler/app-handlers.tsx b/src/renderer/protocol-handler/app-handlers.tsx index 515acec7f5..3ba192c0a6 100644 --- a/src/renderer/protocol-handler/app-handlers.tsx +++ b/src/renderer/protocol-handler/app-handlers.tsx @@ -20,24 +20,20 @@ */ import React from "react"; -import { addClusterURL } from "../components/+add-cluster"; -import { catalogURL } from "../components/+catalog"; -import { attemptInstallByInfo, extensionsURL } from "../components/+extensions"; -import { preferencesURL } from "../components/+preferences"; -import { clusterViewURL } from "../components/cluster-manager/cluster-view.route"; +import { attemptInstallByInfo } from "../components/+extensions"; import { LensProtocolRouterRenderer } from "./router"; import { navigate } from "../navigation/helpers"; -import { entitySettingsURL } from "../components/+entity-settings"; import { catalogEntityRegistry } from "../api/catalog-entity-registry"; import { ClusterStore } from "../../common/cluster-store"; import { EXTENSION_NAME_MATCH, EXTENSION_PUBLISHER_MATCH, LensProtocolRouter } from "../../common/protocol-handler"; import { Notifications } from "../components/notifications"; +import * as routes from "../../common/routes"; export function bindProtocolAddRouteHandlers() { LensProtocolRouterRenderer .getInstance() .addInternalHandler("/preferences", ({ search: { highlight }}) => { - navigate(preferencesURL({ fragment: highlight })); + navigate(routes.preferencesURL({ fragment: highlight })); }) .addInternalHandler("/", ({ tail }) => { if (tail) { @@ -49,26 +45,26 @@ export function bindProtocolAddRouteHandlers() { ); } - navigate(catalogURL()); + navigate(routes.catalogURL()); }) .addInternalHandler("/landing", () => { - navigate(catalogURL()); + navigate(routes.catalogURL()); }) .addInternalHandler("/landing/view/:group/:kind", ({ pathname: { group, kind } }) => { - navigate(catalogURL({ + navigate(routes.catalogURL({ params: { group, kind } })); }) .addInternalHandler("/cluster", () => { - navigate(addClusterURL()); + navigate(routes.addClusterURL()); }) .addInternalHandler("/entity/:entityId/settings", ({ pathname: { entityId } }) => { const entity = catalogEntityRegistry.getById(entityId); if (entity) { - navigate(entitySettingsURL({ params: { entityId } })); + navigate(routes.entitySettingsURL({ params: { entityId } })); } else { Notifications.shortInfo(

@@ -82,7 +78,7 @@ export function bindProtocolAddRouteHandlers() { const cluster = ClusterStore.getInstance().getById(clusterId); if (cluster) { - navigate(clusterViewURL({ params: { clusterId } })); + navigate(routes.clusterViewURL({ params: { clusterId } })); } else { Notifications.shortInfo(

@@ -95,7 +91,7 @@ export function bindProtocolAddRouteHandlers() { const cluster = ClusterStore.getInstance().getById(clusterId); if (cluster) { - navigate(entitySettingsURL({ params: { entityId: clusterId } })); + navigate(routes.entitySettingsURL({ params: { entityId: clusterId } })); } else { Notifications.shortInfo(

@@ -105,7 +101,7 @@ export function bindProtocolAddRouteHandlers() { } }) .addInternalHandler("/extensions", () => { - navigate(extensionsURL()); + navigate(routes.extensionsURL()); }) .addInternalHandler(`/extensions/install${LensProtocolRouter.ExtensionUrlSchema}`, ({ pathname, search: { version } }) => { const name = [ @@ -114,7 +110,7 @@ export function bindProtocolAddRouteHandlers() { ].filter(Boolean) .join("/"); - navigate(extensionsURL()); + navigate(routes.extensionsURL()); attemptInstallByInfo({ name, version, requireConfirmation: true }); }); }