Convert navigateForExtension init to runnable

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton committed 2022-12-06 09:19:00 -05:00
1 parent d585b0957c
commit 659b63d0cf
6 files changed
+46 -31

No files matched your search

@@ -0,0 +1,16 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { MessageChannel } from "../../../../common/utils/channel/message-channel-listener-injection-token";
export interface NavigateForExtensionArgs {
extId: string;
pageId: string | undefined;
params: Record<string, any> | undefined;
}
export const navigateForExtensionChannel: MessageChannel<NavigateForExtensionArgs> = {
id: "navigate-for-extension",
};
@@ -0,0 +1,26 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getMessageChannelListenerInjectable } from "../../../../common/utils/channel/message-channel-listener-injection-token";
import extensionLoaderInjectable from "../../../../extensions/extension-loader/extension-loader.injectable";
import type { LensRendererExtension } from "../../../../extensions/lens-renderer-extension";
import { navigateForExtensionChannel } from "../common/channel";
const navigateForExtensionListenerInjectable = getMessageChannelListenerInjectable({
channel: navigateForExtensionChannel,
id: "main",
handler: (di) => {
const extensionLoader = di.inject(extensionLoaderInjectable);
return ({ extId, pageId, params }) => {
const extension = extensionLoader.getInstanceById(extId) as LensRendererExtension | undefined;
if (extension) {
extension.navigate(pageId, params);
}
};
},
});
export default navigateForExtensionListenerInjectable;