mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Another attempt to fix type errors
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
e22a309c33
commit
3d39cab82d
@ -23,24 +23,24 @@ type ObjectContainsNoRequired<T> = T extends ObjectContainingNoRequired<T>
|
|||||||
: false;
|
: false;
|
||||||
|
|
||||||
// TODO: Missing types for:
|
// TODO: Missing types for:
|
||||||
// - Navigating to route without parameters, with parameters
|
|
||||||
// - Navigating to route with required parameters, without parameters
|
// - Navigating to route with required parameters, without parameters
|
||||||
type Parameters<TParameters> = TParameters extends void
|
type Parameters<TParameters> = ObjectContainsNoRequired<TParameters> extends true
|
||||||
? { parameters?: never }
|
|
||||||
: ObjectContainsNoRequired<TParameters> extends true
|
|
||||||
? { parameters?: TParameters }
|
? { parameters?: TParameters }
|
||||||
: { parameters: TParameters };
|
: { parameters: TParameters };
|
||||||
|
|
||||||
export type NavigateToRouteOptions<TParameter> = Parameters<TParameter> & {
|
export type NavigateToRouteOptions<TParameter extends object> = Parameters<TParameter> & BaseNavigateToRouteOptions;
|
||||||
|
|
||||||
|
export interface BaseNavigateToRouteOptions {
|
||||||
query?: Record<string, string>;
|
query?: Record<string, string>;
|
||||||
fragment?: string;
|
fragment?: string;
|
||||||
withoutAffectingBackButton?: boolean;
|
withoutAffectingBackButton?: boolean;
|
||||||
};
|
}
|
||||||
|
|
||||||
export type NavigateToRoute = <TRoute extends Route<TParameter>, TParameter extends object | void>(
|
export interface NavigateToRoute {
|
||||||
route: TRoute,
|
(route: Route<void>, options?: BaseNavigateToRouteOptions): void;
|
||||||
options?: NavigateToRouteOptions<TParameter>,
|
<TParameters extends Record<TRequiredKeys, string | number>, TRequiredKeys extends string>(route: Route<TParameters>, opts: NavigateToRouteOptions<TParameters>): void;
|
||||||
) => void;
|
<TParameters extends object>(route: Route<TParameters>, opts?: NavigateToRouteOptions<TParameters>): void;
|
||||||
|
}
|
||||||
|
|
||||||
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>({
|
export const navigateToRouteInjectionToken = getInjectionToken<NavigateToRoute>({
|
||||||
id: "navigate-to-route-injection-token",
|
id: "navigate-to-route-injection-token",
|
||||||
|
|||||||
@ -6,15 +6,17 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import type { Route } from "../../../../common/front-end-routing/front-end-route-injection-token";
|
import type { Route } from "../../../../common/front-end-routing/front-end-route-injection-token";
|
||||||
import { navigateToRouteInjectionToken } from "../../../../common/front-end-routing/navigate-to-route-injection-token";
|
import { navigateToRouteInjectionToken } from "../../../../common/front-end-routing/navigate-to-route-injection-token";
|
||||||
|
|
||||||
|
export interface NavigateToPreferenceTabFor {
|
||||||
|
(route: Route<void>): () => void;
|
||||||
|
}
|
||||||
|
|
||||||
const navigateToPreferenceTabInjectable = getInjectable({
|
const navigateToPreferenceTabInjectable = getInjectable({
|
||||||
id: "navigate-to-preference-tab",
|
id: "navigate-to-preference-tab",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di): NavigateToPreferenceTabFor => {
|
||||||
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
||||||
|
|
||||||
return <Parameter extends object | void>(route: Route<Parameter>) => () => {
|
return (route) => () => navigateToRoute(route, { withoutAffectingBackButton: true });
|
||||||
navigateToRoute(route, { withoutAffectingBackButton: true });
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user