Skip to content

Commit c7a86c4

Browse files
committed
Better IPC API declaration for TS
- Changed the preload script and global TS definitions to get APIs declare in module `preload/ipc-api` automatically instead of writting the TS definitions manually.
1 parent 9f10d13 commit c7a86c4

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

src/preload/ipc-api.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// eslint-disable-next-line import/no-extraneous-dependencies
2+
import { ipcRenderer } from 'electron';
3+
4+
/** Notify main the renderer is ready. */
5+
function rendererReady() {
6+
ipcRenderer.send('renderer-ready');
7+
}
8+
9+
export default { rendererReady };

src/preload/preload.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1+
import ipcAPI from '_preload/ipc-api';
12
// eslint-disable-next-line import/no-extraneous-dependencies
2-
import { ipcRenderer, contextBridge } from 'electron';
3+
import { contextBridge } from 'electron';
34

4-
contextBridge.exposeInMainWorld('api', {
5-
/** Notify main the renderer is ready. */
6-
rendererReady: () => { ipcRenderer.send('renderer-ready'); },
7-
});
5+
contextBridge.exposeInMainWorld('ipcAPI', ipcAPI);

src/renderer/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as React from 'react';
22

33
function App(): JSX.Element {
44
React.useEffect(() => {
5-
window.api?.rendererReady();
5+
window.ipcAPI?.rendererReady();
66
}, []);
77

88
return (

src/types/global.d.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
declare global {
22
interface Window {
33
/** APIs for Electron IPC */
4-
api?: {
5-
rendererReady: () => void,
6-
}
4+
ipcAPI?: typeof import('_preload/ipc-api').default
75
}
86
}
97

0 commit comments

Comments
 (0)