Skip to content

Commit be518a7

Browse files
committed
IpcMain: Properly handle Ipc message params (always 2-elem array)
1 parent b89c08e commit be518a7

File tree

1 file changed

+16
-36
lines changed

1 file changed

+16
-36
lines changed

src/ElectronNET.API/API/IpcMain.cs

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -63,25 +63,23 @@ public async Task On(string channel, Action<object> listener)
6363
BridgeConnector.Socket.Off(channel);
6464
BridgeConnector.Socket.On<JsonElement>(channel, (args) =>
6565
{
66-
List<object> objectArray = FormatArguments(args);
67-
68-
if (objectArray.Count == 1)
69-
{
70-
listener(objectArray.First());
71-
}
72-
else
73-
{
74-
listener(objectArray);
75-
}
66+
var arg = FormatArguments(args);
67+
listener(arg);
7668
});
7769
}
7870

79-
private static List<object> FormatArguments(JsonElement args)
71+
private static object FormatArguments(JsonElement args)
8072
{
8173
var objectArray = args.Deserialize<object[]>(BoxedObjectSerializationOptions).ToList();
82-
var objectArray = args.Deserialize<object[]>(ElectronJson.Options).ToList();
83-
objectArray.RemoveAll(item => item is null);
84-
return objectArray;
74+
75+
Debug.Assert(objectArray.Count <= 2);
76+
77+
if (objectArray.Count == 2)
78+
{
79+
return objectArray[1];
80+
}
81+
82+
return null;
8583
}
8684

8785
/// <summary>
@@ -98,18 +96,8 @@ public void OnSync(string channel, Func<object, object> listener)
9896
BridgeConnector.Socket.Emit("registerSyncIpcMainChannel", channel);
9997
BridgeConnector.Socket.On<JsonElement>(channel, (args) =>
10098
{
101-
List<object> objectArray = FormatArguments(args);
102-
object parameter;
103-
if (objectArray.Count == 1)
104-
{
105-
parameter = objectArray.First();
106-
}
107-
else
108-
{
109-
parameter = objectArray;
110-
}
111-
112-
var result = listener(parameter);
99+
var arg = FormatArguments(args);
100+
var result = listener(arg);
113101
BridgeConnector.Socket.Emit(channel + "Sync", result);
114102
});
115103
}
@@ -125,16 +113,8 @@ public void Once(string channel, Action<object> listener)
125113
BridgeConnector.Socket.Emit("registerOnceIpcMainChannel", channel);
126114
BridgeConnector.Socket.Once<JsonElement>(channel, (args) =>
127115
{
128-
List<object> objectArray = FormatArguments(args);
129-
130-
if (objectArray.Count == 1)
131-
{
132-
listener(objectArray.First());
133-
}
134-
else
135-
{
136-
listener(objectArray);
137-
}
116+
var arg = FormatArguments(args);
117+
listener(arg);
138118
});
139119
}
140120

0 commit comments

Comments
 (0)