diff --git a/src/common/front-end-routing/navigate-to-route-injection-token.ts b/src/common/front-end-routing/navigate-to-route-injection-token.ts index 1e336d2ba8..09ee8b5b17 100644 --- a/src/common/front-end-routing/navigate-to-route-injection-token.ts +++ b/src/common/front-end-routing/navigate-to-route-injection-token.ts @@ -23,24 +23,24 @@ type ObjectContainsNoRequired = T extends ObjectContainingNoRequired : false; // TODO: Missing types for: -// - Navigating to route without parameters, with parameters // - Navigating to route with required parameters, without parameters -type Parameters = TParameters extends void - ? { parameters?: never } - : ObjectContainsNoRequired extends true - ? { parameters?: TParameters } - : { parameters: TParameters }; +type Parameters = ObjectContainsNoRequired extends true + ? { parameters?: TParameters } + : { parameters: TParameters }; -export type NavigateToRouteOptions = Parameters & { +export type NavigateToRouteOptions = Parameters & BaseNavigateToRouteOptions; + +export interface BaseNavigateToRouteOptions { query?: Record; fragment?: string; withoutAffectingBackButton?: boolean; -}; +} -export type NavigateToRoute = , TParameter extends object | void>( - route: TRoute, - options?: NavigateToRouteOptions, -) => void; +export interface NavigateToRoute { + (route: Route, options?: BaseNavigateToRouteOptions): void; + , TRequiredKeys extends string>(route: Route, opts: NavigateToRouteOptions): void; + (route: Route, opts?: NavigateToRouteOptions): void; +} export const navigateToRouteInjectionToken = getInjectionToken({ id: "navigate-to-route-injection-token", diff --git a/src/renderer/components/+preferences/preferences-navigation/navigate-to-preference-tab.injectable.ts b/src/renderer/components/+preferences/preferences-navigation/navigate-to-preference-tab.injectable.ts index ffded63f2b..e9d9c457cb 100644 --- a/src/renderer/components/+preferences/preferences-navigation/navigate-to-preference-tab.injectable.ts +++ b/src/renderer/components/+preferences/preferences-navigation/navigate-to-preference-tab.injectable.ts @@ -6,15 +6,17 @@ import { getInjectable } from "@ogre-tools/injectable"; 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"; +export interface NavigateToPreferenceTabFor { + (route: Route): () => void; +} + const navigateToPreferenceTabInjectable = getInjectable({ id: "navigate-to-preference-tab", - instantiate: (di) => { + instantiate: (di): NavigateToPreferenceTabFor => { const navigateToRoute = di.inject(navigateToRouteInjectionToken); - return (route: Route) => () => { - navigateToRoute(route, { withoutAffectingBackButton: true }); - }; + return (route) => () => navigateToRoute(route, { withoutAffectingBackButton: true }); }, });