import { ipcMain } from "electron";

class IpcServer {
  constructor(eveApp) {
    this.eveApp = eveApp;

    // Set
    ipcMain.on("get", function (event, key, id, windowId) {
      event.sender.send("get-reply", key, eveApp[key], id, windowId);
    });

    // Get
    ipcMain.on("set", function (event, key, value, id, windowId) {
      eveApp[key] = value;
      event.sender.send("set-reply", key, value, id, windowId);
    });

    /*
        Trigger an eveApp method.
        This method firts parameter 'args' is the arguments object sent by ipcMain-client.
        The second parameter is an optionnal callback that can be added at the end of the method to send back a 'res' variable to ipcMain-client.
    */
    ipcMain.on("trigger", function (event, key, args, id, windowId) {
      if (typeof eveApp[key] !== "function") {
        console.error(key + " is not a valid eveApp method");
      } else {
        eveApp[key](args, windowId, function (res) {
          event.sender.send("trigger-reply", key, res, id, windowId);
        });
      }
    });
  }
}

export default IpcServer;