mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-07-30 12:34:26 +00:00
Add event handler with sender id
This commit is contained in:
@@ -47,11 +47,11 @@ namespace ElectronNET.API
|
||||
{
|
||||
BridgeConnector.Emit("registerIpcMainChannel", channel);
|
||||
BridgeConnector.Off(channel);
|
||||
BridgeConnector.On<object[]>(channel, (args) =>
|
||||
BridgeConnector.On<object[]>(channel, (args) =>
|
||||
{
|
||||
var objectArray = FormatArguments(args);
|
||||
|
||||
if(objectArray.Count == 1)
|
||||
if (objectArray.Count == 1)
|
||||
{
|
||||
listener(objectArray.First());
|
||||
}
|
||||
@@ -62,6 +62,38 @@ namespace ElectronNET.API
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Listens to channel, when a new message arrives listener would be called with
|
||||
/// listener(event, args...). This listner will keep the window event sender id
|
||||
/// </summary>
|
||||
/// <param name="channel">Channelname.</param>
|
||||
/// <param name="listener">Callback Method.</param>
|
||||
public void OnWithId(string channel, Action<int, object> listener)
|
||||
{
|
||||
BridgeConnector.Emit("registerIpcMainChannelWithId", channel);
|
||||
BridgeConnector.Off(channel);
|
||||
BridgeConnector.On<ArgsAndId>(channel, (data) =>
|
||||
{
|
||||
var objectArray = FormatArguments(data.args);
|
||||
|
||||
if (objectArray.Count == 1)
|
||||
{
|
||||
listener(data.id, objectArray.First());
|
||||
}
|
||||
else
|
||||
{
|
||||
listener(data.id, objectArray);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private class ArgsAndId
|
||||
{
|
||||
public int id { get; set; }
|
||||
public object[] args { get; set; }
|
||||
}
|
||||
|
||||
private List<object> FormatArguments(object[] objectArray)
|
||||
{
|
||||
return objectArray.Where(o => o is object).ToList();
|
||||
|
||||
@@ -5,7 +5,15 @@ module.exports = (socket) => {
|
||||
electronSocket = socket;
|
||||
socket.on('registerIpcMainChannel', (channel) => {
|
||||
electron_1.ipcMain.on(channel, (event, args) => {
|
||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||
event.preventDefault();
|
||||
electronSocket.emit(channel, [...args]);
|
||||
});
|
||||
});
|
||||
socket.on('registerIpcMainChannelWithId', (channel) => {
|
||||
electron_1.ipcMain.on(channel, (event, args) => {
|
||||
event.preventDefault();
|
||||
let id = event.sender.senderId;
|
||||
electronSocket.emit(channel, { id: id, args: [...args] });
|
||||
});
|
||||
});
|
||||
socket.on('registerSyncIpcMainChannel', (channel) => {
|
||||
@@ -15,12 +23,14 @@ module.exports = (socket) => {
|
||||
socket.on(channel + 'Sync', (result) => {
|
||||
event.returnValue = result;
|
||||
});
|
||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||
event.preventDefault();
|
||||
electronSocket.emit(channel, [...args]);
|
||||
});
|
||||
});
|
||||
socket.on('registerOnceIpcMainChannel', (channel) => {
|
||||
electron_1.ipcMain.once(channel, (event, args) => {
|
||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||
event.preventDefault();
|
||||
electronSocket.emit(channel, [...args]);
|
||||
});
|
||||
});
|
||||
socket.on('removeAllListenersIpcMainChannel', (channel) => {
|
||||
|
||||
@@ -6,7 +6,16 @@ export = (socket: Socket) => {
|
||||
electronSocket = socket;
|
||||
socket.on('registerIpcMainChannel', (channel) => {
|
||||
ipcMain.on(channel, (event, args) => {
|
||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||
event.preventDefault();
|
||||
electronSocket.emit(channel, [...args]);
|
||||
});
|
||||
});
|
||||
|
||||
socket.on('registerIpcMainChannelWithId', (channel) => {
|
||||
ipcMain.on(channel, (event, args) => {
|
||||
event.preventDefault();
|
||||
let id = event.sender.senderId;
|
||||
electronSocket.emit(channel, { id: id, args: [...args] });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -17,14 +26,15 @@ export = (socket: Socket) => {
|
||||
socket.on(channel + 'Sync', (result) => {
|
||||
event.returnValue = result;
|
||||
});
|
||||
|
||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||
event.preventDefault();
|
||||
electronSocket.emit(channel, [...args]);
|
||||
});
|
||||
});
|
||||
|
||||
socket.on('registerOnceIpcMainChannel', (channel) => {
|
||||
ipcMain.once(channel, (event, args) => {
|
||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||
event.preventDefault();
|
||||
electronSocket.emit(channel, [...args]);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user