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:
parent
4c8aaa8bbb
commit
4b074d981b
@ -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,
|
||||
}),
|
||||
});
|
||||
}),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user