forked from cerebral/overmind
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBackendConnector.ts
More file actions
49 lines (44 loc) · 1.07 KB
/
BackendConnector.ts
File metadata and controls
49 lines (44 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { ipcRenderer } from 'electron'
import { AppMessage, AppMessageType } from './overmind/types'
type Message = {
appName: string
messages: AppMessage<any>[]
}
type MessageCallback = (message: Message) => void
export class BackendConnector {
port: string
messageCallback: MessageCallback
constructor() {
ipcRenderer.on('port:exists', this.onPortExists)
}
connect(port: string) {
ipcRenderer.send('connect', port)
}
onMessage = (onMessage: MessageCallback) => {
this.messageCallback = onMessage
ipcRenderer.on('message', (_, message) => onMessage(message))
}
onPortExists = (_) => {
this.messageCallback({
appName: null,
messages: [
{
appName: '',
type: AppMessageType.PORT_EXISTS,
data: null,
},
],
})
}
sendMessage(appName: string, eventName: string, payload: object = null) {
ipcRenderer.send('message', {
appName,
type: eventName,
data: payload,
})
}
relaunch() {
ipcRenderer.send('relaunch')
}
}
export default BackendConnector