82 lines
2.3 KiB
TypeScript
82 lines
2.3 KiB
TypeScript
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 } from "../watcher/watcher";
|
|
import {
|
|
SettingsWatchedFilePathsAdd,
|
|
SettingsWatchedFilePathsGet,
|
|
SettingsWatchedFilePathsRemove,
|
|
} from "./ipcMainHandler.settings";
|
|
import { ipcMainHandleAuthStateChanged } from "./ipcMainHandler.user";
|
|
|
|
// 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<void> => {
|
|
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);
|
|
});
|
|
}
|
|
|
|
//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
|
|
);
|
|
|
|
//Watcher Handlers
|
|
ipcMain.on(ipcTypes.toMain.watcher.start, () => {
|
|
StartWatcher();
|
|
});
|
|
|
|
logIpcMessages();
|