1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/src/renderer/components/+preferences/extension-preference-items.injectable.ts
Alex Andreev 6622d2b432 Get extension by sanitizedExtensionId
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
2022-04-26 10:08:57 +03:00

46 lines
1.6 KiB
TypeScript

/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable, getInjectionToken, 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<ExtensionPreferenceItem>({
id: "extension-preference-item-injection-token",
});
const extensionsPreferenceItemsInjectable = getInjectable({
id: "extension-preference-items",
instantiate: (di, extensionId: string): IComputedValue<RegisteredAppPreference[]> => {
const extensions = di.inject(rendererExtensionsInjectable);
const extension = extensions.get().find((extension) => extension.sanitizedExtensionId === extensionId);
return computed(() => {
if (!extension) {
return [];
}
return extension.appPreferences
.filter(preference => !preference.showInPreferencesTab)
.map(preference => ({
id: preference.id,
...preference,
}));
});
},
lifecycle: lifecycleEnum.transient,
});
export default extensionsPreferenceItemsInjectable;