1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fixing navigation to extension specific tabs

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2022-05-05 10:47:32 +03:00
parent 4c8aaa8bbb
commit 4b074d981b

View File

@ -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,
}),
});
}),