refactor: Split 'Event' docs/types into more specific Event types (#17038)

* Event = Base event type (with preventDefault)
* IpcMainEvent = Event that ipcMain emits (with sender, reply, etc.)
* IpcRendererEvent = Event that ipcRenderer emits (with sender,
senderId, etc.)
* KeyboardEvent = Event that we emit with keyboard flags (ctrlKey,
altKey, etc.)

This will dramatically improve peoples TS experience with IPC events
This commit is contained in:
Samuel Attard 2019-02-19 09:24:19 +00:00 committed by Shelley Vohr
parent ef2e7d95fe
commit 3b74837020
22 changed files with 515 additions and 285 deletions

View file

@ -20,6 +20,8 @@ The `ipcRenderer` module has the following method to listen for events and send
* `channel` String
* `listener` Function
* `event` IpcRendererEvent
* `...args` any[]
Listens to `channel`, when a new message arrives `listener` would be called with
`listener(event, args...)`.
@ -28,6 +30,8 @@ Listens to `channel`, when a new message arrives `listener` would be called with
* `channel` String
* `listener` Function
* `event` IpcRendererEvent
* `...args` any[]
Adds a one time `listener` function for the event. This `listener` is invoked
only the next time a message is sent to `channel`, after which it is removed.
@ -92,14 +96,5 @@ the host page instead of the main process.
## Event object
The `event` object passed to the `callback` has the following methods:
### `event.senderId`
Returns the `webContents.id` that sent the message, you can call
`event.sender.sendTo(event.senderId, ...)` to reply to the message, see
[ipcRenderer.sendTo][ipc-renderer-sendto] for more information.
This only applies to messages sent from a different renderer.
Messages sent directly from the main process set `event.senderId` to `0`.
[ipc-renderer-sendto]: #ipcrenderersendtowindowid-channel--arg1-arg2-
The documentation for the `event` object passed to the `callback` can be found
in the [`ipc-renderer-event`](structures/ipc-renderer-event.md) structure docs.