diff --git a/src/renderer/components/+preferences/preferences-navigation/extension-general-preferences-navigation-item.injectable.ts b/src/renderer/components/+preferences/preferences-navigation/extension-general-preferences-navigation-item.injectable.ts index 13380d3116..84a23beaf6 100644 --- a/src/renderer/components/+preferences/preferences-navigation/extension-general-preferences-navigation-item.injectable.ts +++ b/src/renderer/components/+preferences/preferences-navigation/extension-general-preferences-navigation-item.injectable.ts @@ -6,32 +6,34 @@ import { getInjectable } from "@ogre-tools/injectable"; import { computed } from "mobx"; import { map } from "lodash/fp"; -import navigateToRouteInjectable from "../../../../main/navigate-to-route/navigate-to-route.injectable"; import routeIsActiveInjectable from "../../../routes/route-is-active.injectable"; import { preferenceNavigationItemInjectionToken } from "./preference-navigation-items.injectable"; import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension"; import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token"; import { pipeline } from "@ogre-tools/fp"; +import extensionPreferencesRouteInjectable from "../../../../common/front-end-routing/routes/preferences/extension/extension-preferences-route.injectable"; +import currentPathParametersInjectable from "../../../routes/current-path-parameters.injectable"; +import navigateToExtensionPreferencesInjectable from "../../../../common/front-end-routing/routes/preferences/extension/navigate-to-extension-preferences.injectable"; const extensionSpecificTabNavigationItemRegistratorInjectable = getInjectable({ id: "extension-specific-tab-preferences-navigation-items", instantiate: (di) => { return (extension: LensRendererExtension) => { - const navigateToRoute = di.inject(navigateToRouteInjectable); + const navigateToExtensionPreferences = di.inject( + navigateToExtensionPreferencesInjectable, + ); + const route = di.inject(extensionPreferencesRouteInjectable); + const routeIsActive = di.inject(routeIsActiveInjectable, route); + const pathParameters = di.inject(currentPathParametersInjectable); const injectables = pipeline( extension.appPreferenceTabs, map((tab) => { const id = `extension-specific-tab-navigation-item-${tab.id}`; - const route = { - path: `/preferences/${tab.id}`, - clusterFrame: false, - isEnabled: computed(() => true), - }; - const routeIsActive = di.inject(routeIsActiveInjectable, route); + const isActive = computed(() => routeIsActive.get() && pathParameters.get().tabId === tab.id); return getInjectable({ id, @@ -40,9 +42,9 @@ const extensionSpecificTabNavigationItemRegistratorInjectable = getInjectable({ id, label: tab.title, orderNumber: tab.orderNumber, - navigate: () => navigateToRoute(route, {}), + navigate: () => navigateToExtensionPreferences(extension.sanitizedExtensionId, tab.id), isVisible: computed(() => true), - isActive: computed(() => routeIsActive.get()), + isActive, }), }); }),