import { app, ipcMain } from "electron"; import log from "electron-log/main"; import path from "path"; import ipcTypes from "../../util/ipcTypes.json"; import ImportJob from "../decoder/decoder"; import { StartWatcher, StopWatcher } from "../watcher/watcher"; import { SettingsWatchedFilePathsAdd, SettingsWatchedFilePathsGet, SettingsWatchedFilePathsRemove, SettingsWatcherPollingGet, SettingsWatcherPollingSet, } from "./ipcMainHandler.settings"; import { ipcMainHandleAuthStateChanged } from "./ipcMainHandler.user"; import { autoUpdater } from "electron-updater"; // Log all IPC messages and their payloads const logIpcMessages = (): void => { // Get all message types from ipcTypes.toMain Object.keys(ipcTypes.toMain).forEach((key) => { const messageType = ipcTypes.toMain[key]; // Wrap the original handler with our logging const originalHandler = ipcMain.listeners(messageType)[0]; if (originalHandler) { ipcMain.removeAllListeners(messageType); } ipcMain.on(messageType, (event, payload) => { log.info( `%c[IPC Main]%c${messageType}`, "color: red", "color: green", payload, ); // Call original handler if it existed if (originalHandler) { originalHandler(event, payload); } }); }); }; ipcMain.on(ipcTypes.toMain.test, () => console.log("** Verify that ipcMain is loaded and working."), ); //Auth handler ipcMain.on(ipcTypes.toMain.authStateChanged, ipcMainHandleAuthStateChanged); //Add debug handlers if in development if (import.meta.env.DEV) { log.debug("[IPC Debug Functions] Adding Debug Handlers"); ipcMain.on(ipcTypes.toMain.debug.decodeEstimate, async (): Promise => { const relativeEmsFilepath = `_reference/ems/MPI_1/3698420.ENV`; // Get the app's root directory and create an absolute path const rootDir = app.getAppPath(); const absoluteFilepath = path.join(rootDir, relativeEmsFilepath); log.debug("[IPC Debug Function] Decode test Estimate", absoluteFilepath); await ImportJob(absoluteFilepath); const job2 = `/Users/pfic/Downloads/12285264/2285264.ENV`; const job3 = `/Users/pfic/Downloads/14033376/4033376.ENV`; await ImportJob(job2); await ImportJob(job3); }); } //Settings Handlers ipcMain.handle( ipcTypes.toMain.settings.filepaths.get, SettingsWatchedFilePathsGet, ); ipcMain.handle( ipcTypes.toMain.settings.filepaths.add, SettingsWatchedFilePathsAdd, ); ipcMain.handle( ipcTypes.toMain.settings.filepaths.remove, SettingsWatchedFilePathsRemove, ); ipcMain.handle( ipcTypes.toMain.settings.watcher.getpolling, SettingsWatcherPollingGet, ); ipcMain.handle( ipcTypes.toMain.settings.watcher.setpolling, SettingsWatcherPollingSet, ); //Watcher Handlers ipcMain.on(ipcTypes.toMain.watcher.start, () => { StartWatcher(); }); ipcMain.on(ipcTypes.toMain.watcher.stop, () => { StopWatcher(); }); ipcMain.on(ipcTypes.toMain.updates.download, () => { log.info("Download update requested from renderer."); autoUpdater.downloadUpdate(); }); ipcMain.on(ipcTypes.toMain.updates.checkForUpdates, () => { log.info("Checking for updates from renderer."); autoUpdater.checkForUpdates(); }); ipcMain.on(ipcTypes.toMain.updates.apply, () => { log.info("Applying update from renderer."); autoUpdater.quitAndInstall(); }); logIpcMessages();