@@ -2,10 +2,17 @@ import * as log from "fancy-log";
22
33import { IIPCMessage , IPCChannel , IPCMessageType } from "./ipc" ;
44
5- export abstract class IpcService < T extends Electron . IpcMainEvent | Electron . IpcRendererEvent > {
5+ type IpcEventType < T > = T extends Electron . IpcMain ? Electron . IpcMainEvent : Electron . IpcRendererEvent ;
66
7- public register ( ipc : NodeJS . EventEmitter , channel : string ) : void {
8- ipc . on ( channel , ( event : T , ...args : any [ ] ) : void => {
7+ type IpcSenderType < T > = T extends Electron . IpcMain ? Electron . WebContents : Electron . IpcRenderer ;
8+
9+
10+ export abstract class IpcService < T extends Electron . IpcMain | Electron . IpcRenderer > {
11+
12+ public constructor ( protected ipc : T , protected channel : IPCChannel ) { }
13+
14+ public register ( ) : void {
15+ this . ipc . on ( this . channel , ( event : Electron . IpcMainEvent | Electron . IpcRendererEvent , ...args : any [ ] ) : void => {
916 if ( args && args . length === 1 ) {
1017 const ipcMessage : IIPCMessage < any > = args [ 0 ] ;
1118 this . handleMessage ( event , ipcMessage ) ;
@@ -15,10 +22,10 @@ export abstract class IpcService<T extends Electron.IpcMainEvent | Electron.IpcR
1522 } ) ;
1623 }
1724
18- protected abstract handleMessage < MT > ( event : T , message : IIPCMessage < MT > ) : void ;
25+ protected abstract handleMessage < MT > ( event : Electron . IpcMainEvent | Electron . IpcRendererEvent ,
26+ message : IIPCMessage < MT > ) : void ;
1927
20- protected send < MT > ( sender : Electron . WebContents | Electron . IpcRenderer ,
21- channel : IPCChannel , type : IPCMessageType , data : MT ) : void {
28+ protected send < MT > ( sender : IpcSenderType < T > , channel : IPCChannel , type : IPCMessageType , data : MT ) : void {
2229 sender . send ( channel , {
2330 data,
2431 timestamp : new Date ( ) ,
0 commit comments