mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix type error via DRY
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
4a61642a25
commit
9e4f2352a7
@ -11,3 +11,22 @@ export type EnlistMessageChannelListener = <T>(listener: MessageChannelListener<
|
|||||||
export const enlistMessageChannelListenerInjectionToken = getInjectionToken<EnlistMessageChannelListener>({
|
export const enlistMessageChannelListenerInjectionToken = getInjectionToken<EnlistMessageChannelListener>({
|
||||||
id: "enlist-message-channel-listener",
|
id: "enlist-message-channel-listener",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export interface MessageChannelEmitter {
|
||||||
|
on(channel: string, listener: (event: Event, ...args: any[]) => void): void;
|
||||||
|
off(channel: string, listener: (event: Event, ...args: any[]) => void): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const enlistMessageChannelListenerFor = (emitter: MessageChannelEmitter) => (
|
||||||
|
<T>({ channel, handler }: MessageChannelListener<MessageChannel<T>>) => {
|
||||||
|
const nativeOnCallback = (_: Event, message: T) => {
|
||||||
|
handler(message);
|
||||||
|
};
|
||||||
|
|
||||||
|
emitter.on(channel.id, nativeOnCallback);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
emitter.off(channel.id, nativeOnCallback);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|||||||
@ -3,29 +3,12 @@
|
|||||||
* 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 type { IpcMainEvent } from "electron";
|
import { enlistMessageChannelListenerFor, enlistMessageChannelListenerInjectionToken } from "../../../../common/utils/channel/enlist-message-channel-listener-injection-token";
|
||||||
import { enlistMessageChannelListenerInjectionToken } from "../../../../common/utils/channel/enlist-message-channel-listener-injection-token";
|
|
||||||
import ipcMainInjectionToken from "../../../../common/ipc/ipc-main-injection-token";
|
import ipcMainInjectionToken from "../../../../common/ipc/ipc-main-injection-token";
|
||||||
|
|
||||||
const enlistMessageChannelListenerInjectable = getInjectable({
|
const enlistMessageChannelListenerInjectable = getInjectable({
|
||||||
id: "enlist-message-channel-listener-for-main",
|
id: "enlist-message-channel-listener-for-main",
|
||||||
|
instantiate: (di) => enlistMessageChannelListenerFor(di.inject(ipcMainInjectionToken)),
|
||||||
instantiate: (di) => {
|
|
||||||
const ipcMain = di.inject(ipcMainInjectionToken);
|
|
||||||
|
|
||||||
return ({ channel, handler }) => {
|
|
||||||
const nativeOnCallback = (_: IpcMainEvent, message: unknown) => {
|
|
||||||
handler(message);
|
|
||||||
};
|
|
||||||
|
|
||||||
ipcMain.on(channel.id, nativeOnCallback);
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
ipcMain.off(channel.id, nativeOnCallback);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
injectionToken: enlistMessageChannelListenerInjectionToken,
|
injectionToken: enlistMessageChannelListenerInjectionToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -4,28 +4,11 @@
|
|||||||
*/
|
*/
|
||||||
import ipcRendererInjectable from "../ipc-renderer.injectable";
|
import ipcRendererInjectable from "../ipc-renderer.injectable";
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import type { IpcRendererEvent } from "electron";
|
import { enlistMessageChannelListenerFor, enlistMessageChannelListenerInjectionToken } from "../../../../common/utils/channel/enlist-message-channel-listener-injection-token";
|
||||||
import { enlistMessageChannelListenerInjectionToken } from "../../../../common/utils/channel/enlist-message-channel-listener-injection-token";
|
|
||||||
|
|
||||||
const enlistMessageChannelListenerInjectable = getInjectable({
|
const enlistMessageChannelListenerInjectable = getInjectable({
|
||||||
id: "enlist-message-channel-listener-for-renderer",
|
id: "enlist-message-channel-listener-for-renderer",
|
||||||
|
instantiate: (di) => enlistMessageChannelListenerFor(di.inject(ipcRendererInjectable)),
|
||||||
instantiate: (di) => {
|
|
||||||
const ipcRenderer = di.inject(ipcRendererInjectable);
|
|
||||||
|
|
||||||
return ({ channel, handler }) => {
|
|
||||||
const nativeCallback = (_: IpcRendererEvent, message: unknown) => {
|
|
||||||
handler(message);
|
|
||||||
};
|
|
||||||
|
|
||||||
ipcRenderer.on(channel.id, nativeCallback);
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
ipcRenderer.off(channel.id, nativeCallback);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
injectionToken: enlistMessageChannelListenerInjectionToken,
|
injectionToken: enlistMessageChannelListenerInjectionToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user