mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
chore: Fix type errors relating to LensRendererExtension
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
3a62cd4848
commit
3175c96c38
@ -6,29 +6,24 @@ import { getInjectionToken } from "@ogre-tools/injectable";
|
|||||||
import type { RequiredKeysOf } from "type-fest";
|
import type { RequiredKeysOf } from "type-fest";
|
||||||
import type { Route } from "./front-end-route-injection-token";
|
import type { Route } from "./front-end-route-injection-token";
|
||||||
|
|
||||||
type InferParametersFrom<TRoute> = TRoute extends Route<infer TParameters extends object>
|
export type NavigateWithParameterOptions<TParameters> = (
|
||||||
? TParameters
|
TParameters extends object
|
||||||
: never;
|
? RequiredKeysOf<TParameters> extends never
|
||||||
|
|
||||||
type Parameters<TParameters extends object> = TParameters extends void
|
|
||||||
? { parameters?: undefined }
|
|
||||||
: (
|
|
||||||
RequiredKeysOf<TParameters> extends never
|
|
||||||
? { parameters?: TParameters }
|
? { parameters?: TParameters }
|
||||||
: { parameters: TParameters }
|
: { parameters: TParameters }
|
||||||
);
|
: { parameters?: undefined }
|
||||||
|
);
|
||||||
export type NavigateToRouteOptions<TRoute> = Parameters<
|
export interface BaseNavigateToRouteOptions {
|
||||||
InferParametersFrom<TRoute>
|
|
||||||
> & {
|
|
||||||
query?: Record<string, string>;
|
query?: Record<string, string>;
|
||||||
fragment?: string;
|
fragment?: string;
|
||||||
withoutAffectingBackButton?: boolean;
|
withoutAffectingBackButton?: boolean;
|
||||||
};
|
parameters?: undefined;
|
||||||
|
}
|
||||||
|
|
||||||
export type NavigateToRoute = <TRoute extends Route<unknown>>(
|
export interface NavigateToRoute {
|
||||||
route: TRoute,
|
(route: Route<void>, options?: BaseNavigateToRouteOptions): void;
|
||||||
options?: NavigateToRouteOptions<TRoute>) => void;
|
<R extends Route<Params>, Params>(route: R, options: BaseNavigateToRouteOptions & NavigateWithParameterOptions<Params>): void;
|
||||||
|
}
|
||||||
|
|
||||||
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>(
|
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>(
|
||||||
{ id: "navigate-to-route-injection-token" },
|
{ id: "navigate-to-route-injection-token" },
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import { Disposers, LensExtension } from "./lens-extension";
|
import { Disposers, LensExtension } from "./lens-extension";
|
||||||
import type { Disposer } from "@k8slens/utilities";
|
import type { Disposer } from "@k8slens/utilities";
|
||||||
|
import { object } from "@k8slens/utilities";
|
||||||
import type { LensExtensionDependencies } from "./lens-extension";
|
import type { LensExtensionDependencies } from "./lens-extension";
|
||||||
import type { CatalogEntity, CategoryFilter, CatalogCategoryRegistry } from "../common/catalog";
|
import type { CatalogEntity, CategoryFilter, CatalogCategoryRegistry } from "../common/catalog";
|
||||||
import type { EntityFilter, CatalogEntityRegistry } from "../renderer/api/catalog/entity/registry";
|
import type { EntityFilter, CatalogEntityRegistry } from "../renderer/api/catalog/entity/registry";
|
||||||
@ -20,7 +21,7 @@ import type { StatusBarRegistration } from "../renderer/components/status-bar/st
|
|||||||
import type { KubeObjectMenuRegistration } from "../renderer/components/kube-object-menu/kube-object-menu-registration";
|
import type { KubeObjectMenuRegistration } from "../renderer/components/kube-object-menu/kube-object-menu-registration";
|
||||||
import type { WorkloadsOverviewDetailRegistration } from "../renderer/components/workloads-overview/workloads-overview-detail-registration";
|
import type { WorkloadsOverviewDetailRegistration } from "../renderer/components/workloads-overview/workloads-overview-detail-registration";
|
||||||
import type { KubeObjectStatusRegistration } from "../renderer/components/kube-object-status-icon/kube-object-status-registration";
|
import type { KubeObjectStatusRegistration } from "../renderer/components/kube-object-status-icon/kube-object-status-registration";
|
||||||
import { fromPairs, map, matches, toPairs } from "lodash/fp";
|
import { fromPairs, map, matches } from "lodash/fp";
|
||||||
import { pipeline } from "@ogre-tools/fp";
|
import { pipeline } from "@ogre-tools/fp";
|
||||||
import { getExtensionRoutePath } from "../renderer/routes/for-extension";
|
import { getExtensionRoutePath } from "../renderer/routes/for-extension";
|
||||||
import type { KubeObjectHandlerRegistration } from "../renderer/kube-object/handler";
|
import type { KubeObjectHandlerRegistration } from "../renderer/kube-object/handler";
|
||||||
@ -100,7 +101,7 @@ export class LensRendererExtension extends LensExtension {
|
|||||||
super(deps, extension);
|
super(deps, extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
navigate(pageId?: string, params: object = {}) {
|
navigate(pageId?: string, params: Record<string, unknown> = {}) {
|
||||||
const routes = this.dependencies.routes.get();
|
const routes = this.dependencies.routes.get();
|
||||||
const targetRegistration = [...this.globalPages, ...this.clusterPages]
|
const targetRegistration = [...this.globalPages, ...this.clusterPages]
|
||||||
.find(registration => registration.id === (pageId || undefined));
|
.find(registration => registration.id === (pageId || undefined));
|
||||||
@ -121,8 +122,7 @@ export class LensRendererExtension extends LensExtension {
|
|||||||
registration: targetRegistration,
|
registration: targetRegistration,
|
||||||
});
|
});
|
||||||
const query = pipeline(
|
const query = pipeline(
|
||||||
params,
|
object.entries(params),
|
||||||
toPairs,
|
|
||||||
map(([key, value]) => [
|
map(([key, value]) => [
|
||||||
key,
|
key,
|
||||||
normalizedParams[key].stringify(value),
|
normalizedParams[key].stringify(value),
|
||||||
@ -132,7 +132,6 @@ export class LensRendererExtension extends LensExtension {
|
|||||||
|
|
||||||
this.dependencies.navigateToRoute(targetRoute, {
|
this.dependencies.navigateToRoute(targetRoute, {
|
||||||
query,
|
query,
|
||||||
parameters: {},
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -52,7 +52,7 @@ const convertPartialPageParamInitToFull = (key: string, value: FallthroughPagePa
|
|||||||
const convertStringToPageParamInit = (
|
const convertStringToPageParamInit = (
|
||||||
key: string,
|
key: string,
|
||||||
value: string,
|
value: string,
|
||||||
): PageParamInit<string> => ({
|
): PageParamInit<unknown> => ({
|
||||||
name: key,
|
name: key,
|
||||||
defaultValue: value,
|
defaultValue: value,
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user