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

Consolidate navigating to preferences

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-10-20 08:26:22 +03:00
parent 8dca046495
commit a7f300a010
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
11 changed files with 27 additions and 110 deletions

View File

@ -13,7 +13,10 @@ const navigateToPreferencesInjectable = getInjectable({
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToRoute = di.inject(navigateToRouteInjectionToken);
const preferencesRoute = di.inject(preferencesRouteInjectable); const preferencesRoute = di.inject(preferencesRouteInjectable);
return () => navigateToRoute(preferencesRoute); return (tabId?: string) =>
navigateToRoute(preferencesRoute, {
parameters: tabId ? { preferenceTabId: tabId } : {},
});
}, },
}); });

View File

@ -3,17 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import preferencesRouteInjectable from "./preferences-route.injectable"; import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
import { navigateToRouteInjectionToken } from "../../../common/front-end-routing/navigate-to-route-injection-token";
const navigateToApplicationPreferencesInjectable = getInjectable({ const navigateToApplicationPreferencesInjectable = getInjectable({
id: "navigate-to-application-preferences", id: "navigate-to-application-preferences",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToPreferences = di.inject(navigateToPreferencesInjectable);
const route = di.inject(preferencesRouteInjectable);
return () => navigateToRoute(route, { parameters: { preferenceTabId: "app" }}); return () => navigateToPreferences("app");
}, },
}); });

View File

@ -3,17 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import preferencesRouteInjectable from "./preferences-route.injectable"; import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
import { navigateToRouteInjectionToken } from "../../../common/front-end-routing/navigate-to-route-injection-token";
const navigateToEditorPreferencesInjectable = getInjectable({ const navigateToEditorPreferencesInjectable = getInjectable({
id: "navigate-to-editor-preferences", id: "navigate-to-editor-preferences",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToPreferences = di.inject(navigateToPreferencesInjectable);
const route = di.inject(preferencesRouteInjectable);
return () => navigateToRoute(route, { parameters: { preferenceTabId: "editor" }}); return () => navigateToPreferences("editor");
}, },
}); });

View File

@ -3,17 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import preferencesRouteInjectable from "./preferences-route.injectable"; import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
import { navigateToRouteInjectionToken } from "../../../common/front-end-routing/navigate-to-route-injection-token";
const navigateToKubernetesPreferencesInjectable = getInjectable({ const navigateToKubernetesPreferencesInjectable = getInjectable({
id: "navigate-to-kubernetes-preferences", id: "navigate-to-kubernetes-preferences",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToPreferences = di.inject(navigateToPreferencesInjectable);
const route = di.inject(preferencesRouteInjectable);
return () => navigateToRoute(route, { parameters: { preferenceTabId: "kubernetes" }}); return () => navigateToPreferences("kubernetes");
}, },
}); });

View File

@ -3,17 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { navigateToRouteInjectionToken } from "../../../common/front-end-routing/navigate-to-route-injection-token"; import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
import preferencesRouteInjectable from "./preferences-route.injectable";
const navigateToProxyPreferencesInjectable = getInjectable({ const navigateToProxyPreferencesInjectable = getInjectable({
id: "navigate-to-proxy-preferences", id: "navigate-to-proxy-preferences",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToPreferences = di.inject(navigateToPreferencesInjectable);
const route = di.inject(preferencesRouteInjectable);
return () => navigateToRoute(route, { parameters: { preferenceTabId: "proxy" }}); return () => navigateToPreferences("proxy");
}, },
}); });

View File

@ -3,17 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { navigateToRouteInjectionToken } from "../../../common/front-end-routing/navigate-to-route-injection-token"; import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
import preferencesRouteInjectable from "./preferences-route.injectable";
const navigateToTelemetryPreferencesInjectable = getInjectable({ const navigateToTelemetryPreferencesInjectable = getInjectable({
id: "navigate-to-telemetry-preferences", id: "navigate-to-telemetry-preferences",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToPreferences = di.inject(navigateToPreferencesInjectable);
const route = di.inject(preferencesRouteInjectable);
return () => navigateToRoute(route, { parameters: { preferenceTabId: "telemetry" }}); return () => navigateToPreferences("telemetry");
}, },
}); });

View File

@ -3,17 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { navigateToRouteInjectionToken } from "../../../common/front-end-routing/navigate-to-route-injection-token"; import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
import preferencesRouteInjectable from "./preferences-route.injectable";
const navigateToTerminalPreferencesInjectable = getInjectable({ const navigateToTerminalPreferencesInjectable = getInjectable({
id: "navigate-to-terminal-preferences", id: "navigate-to-terminal-preferences",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToPreferences = di.inject(navigateToPreferencesInjectable);
const route = di.inject(preferencesRouteInjectable);
return () => navigateToRoute(route, { parameters: { preferenceTabId: "terminal" }}); return () => navigateToPreferences("terminal");
}, },
}); });

View File

@ -1,44 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { pipeline } from "@ogre-tools/fp";
import { getInjectable, getInjectionToken } from "@ogre-tools/injectable";
import { computedInjectManyInjectable } from "@ogre-tools/injectable-extension-for-mobx";
import { filter, orderBy } from "lodash/fp";
import type { IComputedValue } from "mobx";
import { computed } from "mobx";
export const preferenceNavigationItemInjectionToken =
getInjectionToken<PreferenceNavigationItem>({
id: "preference-navigation-item-injection-token",
});
export interface PreferenceNavigationItem {
id: string;
label: string;
isActive: IComputedValue<boolean>;
isVisible: IComputedValue<boolean>;
navigate: () => void;
orderNumber: number;
parent: string;
}
const preferenceNavigationItemsInjectable = getInjectable({
id: "preference-navigation-items",
instantiate: (di) => {
const computedInjectMany = di.inject(computedInjectManyInjectable);
const navigationItems = computedInjectMany(preferenceNavigationItemInjectionToken);
return computed((): PreferenceNavigationItem[] =>
pipeline(
navigationItems.get(),
filter((item) => !!item.isVisible.get()),
(items) => orderBy([(item) => item.orderNumber], ["asc"], items),
),
);
},
});
export default preferenceNavigationItemsInjectable;

View File

@ -11,8 +11,8 @@ import navigateToAddClusterInjectable from "../../../common/front-end-routing/ro
import navigateToExtensionsInjectable from "../../../common/front-end-routing/routes/extensions/navigate-to-extensions.injectable"; import navigateToExtensionsInjectable from "../../../common/front-end-routing/routes/extensions/navigate-to-extensions.injectable";
import navigateToEntitySettingsInjectable from "../../../common/front-end-routing/routes/entity-settings/navigate-to-entity-settings.injectable"; import navigateToEntitySettingsInjectable from "../../../common/front-end-routing/routes/entity-settings/navigate-to-entity-settings.injectable";
import navigateToClusterViewInjectable from "../../../common/front-end-routing/routes/cluster-view/navigate-to-cluster-view.injectable"; import navigateToClusterViewInjectable from "../../../common/front-end-routing/routes/cluster-view/navigate-to-cluster-view.injectable";
import navigateToPreferenceTabIdInjectable from "./navigate-to-preference-tab-id.injectable";
import catalogEntityRegistryInjectable from "../../api/catalog/entity/registry.injectable"; import catalogEntityRegistryInjectable from "../../api/catalog/entity/registry.injectable";
import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
const bindProtocolAddRouteHandlersInjectable = getInjectable({ const bindProtocolAddRouteHandlersInjectable = getInjectable({
id: "bind-protocol-add-route-handlers", id: "bind-protocol-add-route-handlers",
@ -25,7 +25,7 @@ const bindProtocolAddRouteHandlersInjectable = getInjectable({
navigateToExtensions: di.inject(navigateToExtensionsInjectable), navigateToExtensions: di.inject(navigateToExtensionsInjectable),
navigateToEntitySettings: di.inject(navigateToEntitySettingsInjectable), navigateToEntitySettings: di.inject(navigateToEntitySettingsInjectable),
navigateToClusterView: di.inject(navigateToClusterViewInjectable), navigateToClusterView: di.inject(navigateToClusterViewInjectable),
navigateToPreferenceTabId: di.inject(navigateToPreferenceTabIdInjectable), navigateToPreferences: di.inject(navigateToPreferencesInjectable),
entityRegistry: di.inject(catalogEntityRegistryInjectable), entityRegistry: di.inject(catalogEntityRegistryInjectable),
}), }),
}); });

View File

@ -28,7 +28,7 @@ interface Dependencies {
navigateToExtensions: () => void; navigateToExtensions: () => void;
navigateToEntitySettings: NavigateToEntitySettings; navigateToEntitySettings: NavigateToEntitySettings;
navigateToClusterView: NavigateToClusterView; navigateToClusterView: NavigateToClusterView;
navigateToPreferenceTabId: (tabId: string) => void; navigateToPreferences: (tabId: string) => void;
entityRegistry: CatalogEntityRegistry; entityRegistry: CatalogEntityRegistry;
} }
@ -40,13 +40,13 @@ export const bindProtocolAddRouteHandlers = ({
navigateToExtensions, navigateToExtensions,
navigateToEntitySettings, navigateToEntitySettings,
navigateToClusterView, navigateToClusterView,
navigateToPreferenceTabId, navigateToPreferences,
entityRegistry, entityRegistry,
}: Dependencies) => () => { }: Dependencies) => () => {
lensProtocolRouterRenderer lensProtocolRouterRenderer
.addInternalHandler("/preferences", ({ search: { highlight: tabId }}) => { .addInternalHandler("/preferences", ({ search: { highlight: tabId }}) => {
if (tabId) { if (tabId) {
navigateToPreferenceTabId(tabId); navigateToPreferences(tabId);
} }
}) })
.addInternalHandler("/", ({ tail }) => { .addInternalHandler("/", ({ tail }) => {

View File

@ -1,30 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import preferenceNavigationItemsInjectable from "../../components/+preferences/preferences-navigation/preference-navigation-items.injectable";
import navigateToPreferencesInjectable from "../../../common/front-end-routing/routes/preferences/navigate-to-preferences.injectable";
const navigateToPreferenceTabIdInjectable = getInjectable({
id: "navigate-to-preference-tab-id",
instantiate: (di) => {
const preferenceNavigationItems = di.inject(preferenceNavigationItemsInjectable);
const navigateToPreferences = di.inject(navigateToPreferencesInjectable);
return (tabId: string) => {
const targetTab = preferenceNavigationItems.get().find(item => item.id === tabId);
if (targetTab) {
targetTab.navigate();
return;
}
navigateToPreferences();
};
},
});
export default navigateToPreferenceTabIdInjectable;