ipcMain.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { ipcMain } from "electron";
  2. import { socket } from "./tray";
  3. import {
  4. hideMainWin,
  5. isMaximized,
  6. minimizeMainWin,
  7. unmaximizeMainWin,
  8. maximizeMainWin,
  9. middleMainWin,
  10. } from "../win/mainWin";
  11. let hasEmittedUid = false;
  12. export const initIpcMain = () => {
  13. // 获取当前窗口
  14. // callback(BrowserWindow.fromWebContents(e.sender), e, ...par)
  15. const handle = (name: string, callback: Function) => {
  16. ipcMain.handle(name, (e, ...par) => callback(e, ...par));
  17. };
  18. // 关闭窗口
  19. handle("close", () => hideMainWin());
  20. // 最小化
  21. handle("min", () => minimizeMainWin());
  22. // 最大化
  23. handle("max", () => {
  24. let obj = { type: "max", data: "unmax" };
  25. if (isMaximized()) {
  26. unmaximizeMainWin();
  27. } else {
  28. obj.data = "max";
  29. maximizeMainWin();
  30. }
  31. return obj;
  32. });
  33. handle("middle", () => middleMainWin());
  34. ipcMain.on("login-uid", (event, uid) => {
  35. if (hasEmittedUid) {
  36. console.log("Uid already emitted, skipping...");
  37. return;
  38. }
  39. console.log("Received uid in main process:", uid);
  40. if (socket && socket.connected) {
  41. socket.emit("login", Number(uid));
  42. hasEmittedUid = true;
  43. console.log("Socket login with uid:", uid);
  44. } else {
  45. console.warn("Socket not connected when trying to send uid");
  46. }
  47. });
  48. // 添加重置状态的处理
  49. socket?.on("disconnect", () => {
  50. hasEmittedUid = false; // socket断开连接时重置状态
  51. });
  52. };