Update code formatting
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { IpcMain, IpcRenderer, ipcMain, ipcRenderer } from 'electron'
|
||||
import { IpcMain, ipcMain, ipcRenderer } from 'electron'
|
||||
|
||||
import { Event } from './Events'
|
||||
import { IpcRendererEventBus } from './IpcRendererEventBus'
|
||||
|
||||
export interface EventBusInterface {
|
||||
subscribe<MessageType>(event: Event<MessageType>, callback: (msg: MessageType) => void): void
|
||||
@@ -9,7 +10,7 @@ export interface EventBusInterface {
|
||||
unsubscribe<MessageType>(event: Event<MessageType>, callback: any): void
|
||||
}
|
||||
|
||||
interface CallbackStore {
|
||||
export interface CallbackStore {
|
||||
wrappedCallback: any
|
||||
callback: any
|
||||
}
|
||||
@@ -45,45 +46,5 @@ class IpcMainEventBus implements EventBusInterface {
|
||||
}
|
||||
}
|
||||
|
||||
class IpcRendererEventBus implements EventBusInterface {
|
||||
private ipc: IpcRenderer
|
||||
private callbacks: Array<CallbackStore> = []
|
||||
|
||||
constructor(ipc: IpcRenderer) {
|
||||
this.ipc = ipc
|
||||
}
|
||||
|
||||
public subscribe<MessageType>(event: Event<MessageType>, callback: (msg: MessageType) => void) {
|
||||
const wrappedCallback = (_event: any, arg: any) => {
|
||||
callback(arg)
|
||||
}
|
||||
|
||||
this.ipc.on(event.topic, wrappedCallback)
|
||||
|
||||
this.callbacks.push({
|
||||
callback,
|
||||
wrappedCallback,
|
||||
})
|
||||
}
|
||||
|
||||
public unsubscribeAll<MessageType>(event: Event<MessageType>) {
|
||||
this.ipc.removeAllListeners(event.topic)
|
||||
}
|
||||
|
||||
public unsubscribe<MessageType>(event: Event<MessageType>, callback: any) {
|
||||
const item = this.callbacks.find(store => store.callback === callback)
|
||||
if (!item) {
|
||||
return
|
||||
}
|
||||
|
||||
this.ipc.removeListener(event.topic, item.wrappedCallback)
|
||||
this.callbacks = this.callbacks.filter(a => a !== item)
|
||||
}
|
||||
|
||||
public emit<MessageType>(event: Event<MessageType>, msg: MessageType) {
|
||||
this.ipc.send(event.topic, msg)
|
||||
}
|
||||
}
|
||||
|
||||
export const rendererEvents = new IpcRendererEventBus(ipcRenderer)
|
||||
export const backendEvents = new IpcMainEventBus(ipcMain)
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
import { DataSourceState, MqttOptions } from '../backend/src/DataSource'
|
||||
|
||||
import { UpdateInfo } from 'builder-util-runtime'
|
||||
import { Base64Message } from '../backend/src/Model/Base64Message'
|
||||
|
||||
export { UpdateInfo } from 'builder-util-runtime'
|
||||
import { DataSourceState, MqttOptions } from '../backend/src/DataSource'
|
||||
import { UpdateInfo } from 'builder-util-runtime'
|
||||
|
||||
export interface Event<MessageType> {
|
||||
topic: string
|
||||
}
|
||||
|
||||
export interface AddMqttConnection {
|
||||
id: string,
|
||||
id: string
|
||||
options: MqttOptions
|
||||
}
|
||||
|
||||
@@ -33,9 +30,9 @@ export const updateAvailable: Event<UpdateInfo> = {
|
||||
}
|
||||
|
||||
export interface MqttMessage {
|
||||
topic: string,
|
||||
payload: Base64Message | null,
|
||||
qos: 0 | 1 | 2,
|
||||
topic: string
|
||||
payload: Base64Message | null
|
||||
qos: 0 | 1 | 2
|
||||
retain: boolean
|
||||
}
|
||||
|
||||
|
||||
35
events/IpcRendererEventBus.ts
Normal file
35
events/IpcRendererEventBus.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { CallbackStore, EventBusInterface } from './EventBus'
|
||||
import { Event } from './Events'
|
||||
import { IpcRenderer } from 'electron'
|
||||
|
||||
export class IpcRendererEventBus implements EventBusInterface {
|
||||
private ipc: IpcRenderer
|
||||
private callbacks: Array<CallbackStore> = []
|
||||
constructor(ipc: IpcRenderer) {
|
||||
this.ipc = ipc
|
||||
}
|
||||
public subscribe<MessageType>(event: Event<MessageType>, callback: (msg: MessageType) => void) {
|
||||
const wrappedCallback = (_: any, arg: any) => {
|
||||
callback(arg)
|
||||
}
|
||||
this.ipc.on(event.topic, wrappedCallback)
|
||||
this.callbacks.push({
|
||||
callback,
|
||||
wrappedCallback,
|
||||
})
|
||||
}
|
||||
public unsubscribeAll<MessageType>(event: Event<MessageType>) {
|
||||
this.ipc.removeAllListeners(event.topic)
|
||||
}
|
||||
public unsubscribe<MessageType>(event: Event<MessageType>, callback: any) {
|
||||
const item = this.callbacks.find(store => store.callback === callback)
|
||||
if (!item) {
|
||||
return
|
||||
}
|
||||
this.ipc.removeListener(event.topic, item.wrappedCallback)
|
||||
this.callbacks = this.callbacks.filter(a => a !== item)
|
||||
}
|
||||
public emit<MessageType>(event: Event<MessageType>, msg: MessageType) {
|
||||
this.ipc.send(event.topic, msg)
|
||||
}
|
||||
}
|
||||
@@ -5,13 +5,13 @@ interface StorageEvent {
|
||||
}
|
||||
|
||||
export interface StoreCommand extends StorageEvent {
|
||||
store?: string,
|
||||
store?: string
|
||||
data?: any
|
||||
error?: any
|
||||
}
|
||||
|
||||
export interface LoadCommand extends StorageEvent {
|
||||
store: string,
|
||||
store: string
|
||||
}
|
||||
|
||||
export const storageStoreEvent: Event<StoreCommand> = {
|
||||
|
||||
Reference in New Issue
Block a user