All files / src/listening-of-messages enlist-message-channel-listener.injectable.ts

100% Statements 28/28
100% Branches 5/5
100% Functions 3/3
100% Lines 28/28

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 291x 1x 1x 1x 1x 1x 1x 1x 1x 9x 9x 9x 8x 5x 5x 8x 8x 8x 8x 1x 1x 8x 9x 1x 1x 1x 1x 1x  
import ipcRendererInjectable from "../ipc/ipc-renderer.injectable";
import { getInjectable } from "@ogre-tools/injectable";
import type { IpcRendererEvent } from "electron";
import { enlistMessageChannelListenerInjectionToken } from "@k8slens/messaging";
 
const enlistMessageChannelListenerInjectable = getInjectable({
  id: "enlist-message-channel-listener-for-renderer",
 
  instantiate: (di) => {
    const ipcRenderer = di.inject(ipcRendererInjectable);
 
    return ({ channel, handler }) => {
      const nativeCallback = (_: IpcRendererEvent, message: any) => {
        handler(message);
      };
 
      ipcRenderer.on(channel.id, nativeCallback);
 
      return () => {
        ipcRenderer.off(channel.id, nativeCallback);
      };
    };
  },
 
  injectionToken: enlistMessageChannelListenerInjectionToken,
});
 
export default enlistMessageChannelListenerInjectable;