ipcInit.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {ipcMain} from "electron";
  2. import {actionMap, IpcAction, windowAction} from "../../tools/IpcCmd.ts";
  3. import hook from "../../util/hook.ts";
  4. import Logger from "../../util/logger.ts";
  5. import {handle} from "../../util/promiseHandle.ts";
  6. let logger = Logger.logger('ipcInit', 'info');
  7. function bindAction(action: IpcAction, bindReplay: boolean = false) {
  8. let code = bindReplay?action.resCode:action.code;
  9. logger.info(`绑定ipc事件:${code}-${action.title}`);
  10. ipcMain.on(code, async (_ipcEvent: Electron.IpcMainEvent, arg) => {
  11. // console.log(event);
  12. logger.info(`${code}-${action.title},参数:${JSON.stringify(arg)}`);
  13. let [err,res] = await handle(
  14. hook.runHook(code, arg)
  15. );
  16. if(err){
  17. logger.error(err);
  18. }
  19. logger.debug(`${code}-${action.title},返回:${res}`);
  20. _ipcEvent.reply(code, res);
  21. });
  22. }
  23. export function onceIpcReply(code: string) {
  24. return new Promise((resolve, _) => {
  25. ipcMain.once(code, (_, arg) => {
  26. resolve(arg);
  27. });
  28. });
  29. }
  30. export function initIpc() {
  31. logger.info('初始化ipc事件');
  32. // 绑定ipc事件
  33. bindAction(windowAction.bindSignId,true);
  34. bindAction(windowAction.bindSignId);
  35. bindAction(windowAction.close);
  36. bindAction(windowAction.min);
  37. bindAction(windowAction.max);
  38. bindAction(windowAction.unMax);
  39. bindAction(windowAction.ding);
  40. bindAction(windowAction.unDing);
  41. bindAction(windowAction.restore);
  42. bindAction(windowAction.openSetting);
  43. bindAction(actionMap.exitApp);
  44. bindAction(actionMap.apiControl);
  45. }