diff --git a/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap b/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap
index 425728241d..9b704d86b2 100644
--- a/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap
+++ b/src/behaviours/preferences/__snapshots__/navigation-to-extension-specific-preferences.test.tsx.snap
@@ -145,31 +145,6 @@ exports[`preferences - navigation to extension specific preferences given in pre
-
-
- Test preference item
-
-
-
-
-
-
{
});
it("doesn't show preferences from unrelated extension", () => {
- const actual = rendered.getByTestId("extension-preference-item-for-some-other-preference-item-id");
+ const actual = rendered.queryByTestId("extension-preference-item-for-some-other-preference-item-id");
expect(actual).toBeNull();
});
diff --git a/src/renderer/components/+preferences/extension-preference-items.injectable.ts b/src/renderer/components/+preferences/extension-preference-items.injectable.ts
index f4d08304d2..68d66ffb0a 100644
--- a/src/renderer/components/+preferences/extension-preference-items.injectable.ts
+++ b/src/renderer/components/+preferences/extension-preference-items.injectable.ts
@@ -2,49 +2,35 @@
* 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 { filter, overSome } from "lodash/fp";
+import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
+import type { IComputedValue } from "mobx";
import { computed } from "mobx";
+
import rendererExtensionsInjectable from "../../../extensions/renderer-extensions.injectable";
-import type { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
+
import type { RegisteredAppPreference } from "./app-preferences/app-preference-registration";
-interface ExtensionPreferenceItem extends RegisteredAppPreference {
- extension: LensRendererExtension;
-}
-
-export const extensionPreferenceItemInjectionToken = getInjectionToken({
- id: "extension-preference-item-injection-token",
-});
-
const extensionsPreferenceItemsInjectable = getInjectable({
id: "extension-preference-items",
- instantiate: (di) => {
+ instantiate: (di, extensionId: string): IComputedValue => {
const extensions = di.inject(rendererExtensionsInjectable);
+ const extension = extensions.get().find((extension) => extension.id === extensionId);
return computed(() => {
- const enabledExtensions = extensions.get();
+ if (!extension) {
+ return [];
+ }
- return pipeline(
- di.injectMany(extensionPreferenceItemInjectionToken),
-
- filter((item) =>
- overSome([
- isNonExtensionItem,
- isEnabledExtensionItemFor(enabledExtensions),
- ])(item),
- ),
- );
+ return extension.appPreferences
+ .filter(preference => !preference.showInPreferencesTab)
+ .map(preference => ({
+ id: preference.id,
+ ...preference,
+ }));
});
},
+ lifecycle: lifecycleEnum.transient,
});
-const isNonExtensionItem = (item: ExtensionPreferenceItem) => !item.extension;
-
-const isEnabledExtensionItemFor =
- (enabledExtensions: LensRendererExtension[]) => (item: ExtensionPreferenceItem) =>
- !!enabledExtensions.find((extension) => extension === item.extension);
-
export default extensionsPreferenceItemsInjectable;
diff --git a/src/renderer/components/+preferences/extensions.tsx b/src/renderer/components/+preferences/extensions.tsx
index 930b74c8ee..3bc4bc20e5 100644
--- a/src/renderer/components/+preferences/extensions.tsx
+++ b/src/renderer/components/+preferences/extensions.tsx
@@ -11,6 +11,7 @@ import type { RegisteredAppPreference } from "./app-preferences/app-preference-r
import { ExtensionSettings } from "./extension-settings";
import { Preferences } from "./preferences";
import extensionsPreferenceItemsInjectable from "./extension-preference-items.injectable";
+import currentPathParametersInjectable from "../../routes/current-path-parameters.injectable";
interface Dependencies {
preferenceItems: IComputedValue;
@@ -36,8 +37,13 @@ export const Extensions = withInjectables(
observer(NonInjectedExtensions),
{
- getProps: (di) => ({
- preferenceItems: di.inject(extensionsPreferenceItemsInjectable),
- }),
+ getProps: (di) => {
+ const pathParameters = di.inject(currentPathParametersInjectable);
+ const extensionId = pathParameters.get().extensionId;
+
+ return {
+ preferenceItems: di.inject(extensionsPreferenceItemsInjectable, extensionId),
+ };
+ },
},
);