From be518a7a10e61de001601b900f841fb8587ddc8a Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 17 Nov 2025 13:56:48 +0100 Subject: [PATCH] IpcMain: Properly handle Ipc message params (always 2-elem array) --- src/ElectronNET.API/API/IpcMain.cs | 52 +++++++++--------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/src/ElectronNET.API/API/IpcMain.cs b/src/ElectronNET.API/API/IpcMain.cs index 518bfc6..0260a88 100644 --- a/src/ElectronNET.API/API/IpcMain.cs +++ b/src/ElectronNET.API/API/IpcMain.cs @@ -63,25 +63,23 @@ namespace ElectronNET.API BridgeConnector.Socket.Off(channel); BridgeConnector.Socket.On(channel, (args) => { - List objectArray = FormatArguments(args); - - if (objectArray.Count == 1) - { - listener(objectArray.First()); - } - else - { - listener(objectArray); - } + var arg = FormatArguments(args); + listener(arg); }); } - private static List FormatArguments(JsonElement args) + private static object FormatArguments(JsonElement args) { var objectArray = args.Deserialize(BoxedObjectSerializationOptions).ToList(); - var objectArray = args.Deserialize(ElectronJson.Options).ToList(); - objectArray.RemoveAll(item => item is null); - return objectArray; + + Debug.Assert(objectArray.Count <= 2); + + if (objectArray.Count == 2) + { + return objectArray[1]; + } + + return null; } /// @@ -98,18 +96,8 @@ namespace ElectronNET.API BridgeConnector.Socket.Emit("registerSyncIpcMainChannel", channel); BridgeConnector.Socket.On(channel, (args) => { - List objectArray = FormatArguments(args); - object parameter; - if (objectArray.Count == 1) - { - parameter = objectArray.First(); - } - else - { - parameter = objectArray; - } - - var result = listener(parameter); + var arg = FormatArguments(args); + var result = listener(arg); BridgeConnector.Socket.Emit(channel + "Sync", result); }); } @@ -125,16 +113,8 @@ namespace ElectronNET.API BridgeConnector.Socket.Emit("registerOnceIpcMainChannel", channel); BridgeConnector.Socket.Once(channel, (args) => { - List objectArray = FormatArguments(args); - - if (objectArray.Count == 1) - { - listener(objectArray.First()); - } - else - { - listener(objectArray); - } + var arg = FormatArguments(args); + listener(arg); }); }