import { BrowserWindow, IpcMainInvokeEvent, ipcMain } from "electron"; import { FsJob, FsJobHandler } from "./fsjob.js"; import { ModLoader } from "./mods/loader.js"; export class IpcHandler { private readonly fsJob: FsJobHandler; private readonly modLoader: ModLoader; constructor(fsJob: FsJobHandler, modLoader: ModLoader) { this.fsJob = fsJob; this.modLoader = modLoader; } install(window: BrowserWindow) { ipcMain.handle("fs-job", this.handleFsJob.bind(this)); ipcMain.handle("get-mods", this.getMods.bind(this)); ipcMain.handle("set-fullscreen", this.setFullscreen.bind(this, window)); // Not implemented // ipcMain.handle("open-mods-folder", ...) } private handleFsJob(_event: IpcMainInvokeEvent, job: FsJob) { return this.fsJob.handleJob(job); } private async getMods() { // TODO: Split mod reloads into a different IPC request await this.modLoader.loadMods(); return this.modLoader.getAllMods(); } private setFullscreen(window: BrowserWindow, _event: IpcMainInvokeEvent, flag: boolean) { if (window.isFullScreen() != flag) { window.setFullScreen(flag); } } }