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 { computed } from "mobx";
|
||||||
import { map } from "lodash/fp";
|
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 routeIsActiveInjectable from "../../../routes/route-is-active.injectable";
|
||||||
import { preferenceNavigationItemInjectionToken } from "./preference-navigation-items.injectable";
|
import { preferenceNavigationItemInjectionToken } from "./preference-navigation-items.injectable";
|
||||||
|
|
||||||
import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
|
||||||
import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token";
|
import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token";
|
||||||
import { pipeline } from "@ogre-tools/fp";
|
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({
|
const extensionSpecificTabNavigationItemRegistratorInjectable = getInjectable({
|
||||||
id: "extension-specific-tab-preferences-navigation-items",
|
id: "extension-specific-tab-preferences-navigation-items",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
return (extension: LensRendererExtension) => {
|
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(
|
const injectables = pipeline(
|
||||||
extension.appPreferenceTabs,
|
extension.appPreferenceTabs,
|
||||||
|
|
||||||
map((tab) => {
|
map((tab) => {
|
||||||
const id = `extension-specific-tab-navigation-item-${tab.id}`;
|
const id = `extension-specific-tab-navigation-item-${tab.id}`;
|
||||||
const route = {
|
const isActive = computed(() => routeIsActive.get() && pathParameters.get().tabId === tab.id);
|
||||||
path: `/preferences/${tab.id}`,
|
|
||||||
clusterFrame: false,
|
|
||||||
isEnabled: computed(() => true),
|
|
||||||
};
|
|
||||||
const routeIsActive = di.inject(routeIsActiveInjectable, route);
|
|
||||||
|
|
||||||
return getInjectable({
|
return getInjectable({
|
||||||
id,
|
id,
|
||||||
@ -40,9 +42,9 @@ const extensionSpecificTabNavigationItemRegistratorInjectable = getInjectable({
|
|||||||
id,
|
id,
|
||||||
label: tab.title,
|
label: tab.title,
|
||||||
orderNumber: tab.orderNumber,
|
orderNumber: tab.orderNumber,
|
||||||
navigate: () => navigateToRoute(route, {}),
|
navigate: () => navigateToExtensionPreferences(extension.sanitizedExtensionId, tab.id),
|
||||||
isVisible: computed(() => true),
|
isVisible: computed(() => true),
|
||||||
isActive: computed(() => routeIsActive.get()),
|
isActive,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user