From 24ece441911b758fa7b4e824151be3ab8da71be8 Mon Sep 17 00:00:00 2001 From: Robert Kossessa Date: Tue, 12 Mar 2024 16:13:48 +0100 Subject: [PATCH] UPD: Type update event --- src/main/index.ts | 24 ++++++++++++------------ src/preload/index.d.ts | 2 +- src/preload/index.ts | 4 ++-- src/renderer/src/deviceStore.ts | 24 ++++++++++++++++++------ 4 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index 3c1207f..2d39c58 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -121,29 +121,29 @@ app.whenReady().then(() => { ipcMain.on('electron:openExternal', (_event, url) => shell.openExternal(url)) ipcMain.on('electron:openDevTools', () => mainWindow.webContents.toggleDevTools()) ipcMain.on('electron:reload', () => mainWindow.webContents.reloadIgnoringCache()) - nanoSerialApi.on('nanoSerialApi:device-attached', (deviceid, ...data) => { + nanoSerialApi.on('nanoSerialApi:device-attached', (deviceid, data) => { console.log('Attached event', deviceid, data) - mainWindow.webContents.send('nanoSerialApi:event', 'device-attached', deviceid, ...data) + mainWindow.webContents.send('nanoSerialApi:event', 'device-attached', deviceid, data) }) - nanoSerialApi.on('nanoSerialApi:device-detached', (deviceid, ...data) => { + nanoSerialApi.on('nanoSerialApi:device-detached', (deviceid, data) => { console.log('Detached event', deviceid, data) - mainWindow.webContents.send('nanoSerialApi:event', 'device-detached', deviceid, ...data) + mainWindow.webContents.send('nanoSerialApi:event', 'device-detached', deviceid, data) }) - nanoSerialApi.on('nanoSerialApi:device-error', (deviceid, ...data) => { + nanoSerialApi.on('nanoSerialApi:device-error', (deviceid, data) => { console.log('Error event', deviceid, data) - mainWindow.webContents.send('nanoSerialApi:event', 'device-error', deviceid, ...data) + mainWindow.webContents.send('nanoSerialApi:event', 'device-error', deviceid, data) }) - nanoSerialApi.on('nanoSerialApi:connected', (deviceid, ...data) => { + nanoSerialApi.on('nanoSerialApi:connected', (deviceid, data) => { console.log('Connected event', deviceid, data) - mainWindow.webContents.send('nanoSerialApi:event', 'connected', deviceid, ...data) + mainWindow.webContents.send('nanoSerialApi:event', 'connected', deviceid, data) }) - nanoSerialApi.on('nanoSerialApi:disconnected', (deviceid, ...data) => { + nanoSerialApi.on('nanoSerialApi:disconnected', (deviceid, data) => { console.log('Disconnected event', deviceid, data) - mainWindow.webContents.send('nanoSerialApi:event', 'disconnected', deviceid, ...data) + mainWindow.webContents.send('nanoSerialApi:event', 'disconnected', deviceid, data) }) - nanoSerialApi.on('nanoSerialApi:update', (deviceid, ...data) => { + nanoSerialApi.on('nanoSerialApi:update', (deviceid, data) => { console.log('Update event', deviceid, data) - mainWindow.webContents.send('nanoSerialApi:event', 'update', deviceid, ...data) + mainWindow.webContents.send('nanoSerialApi:event', 'update', deviceid, data) }) const menu = new Menu() for (const menuItem of Object.values(appMenu)) { diff --git a/src/preload/index.d.ts b/src/preload/index.d.ts index c36ba69..e4b5b89 100644 --- a/src/preload/index.d.ts +++ b/src/preload/index.d.ts @@ -2,7 +2,7 @@ export interface INanoSerialApi { listAttachedDevices(): Promise connect(deviceid: string): Promise disconnect(deviceid: string): Promise - on(callback: (eventid: string, deviceid: string, data: any) => void): void + on(callback: (eventid: string, deviceid: string, data: string) => void): void send(deviceid: string, jsonstr: string): Promise save(deviceid: string): Promise } diff --git a/src/preload/index.ts b/src/preload/index.ts index 25279d5..576d4a2 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -12,8 +12,8 @@ contextBridge.exposeInMainWorld('nanoIpc', { return ipcRenderer.invoke('nanoSerialApi:disconnect', deviceid) }, on(callback) { - ipcRenderer.on('nanoSerialApi:event', (_event, eventid, deviceid, ...data) => { - callback(eventid, deviceid, ...data) + ipcRenderer.on('nanoSerialApi:event', (_event, eventid, deviceid, data) => { + callback(eventid, deviceid, data) }) }, send(deviceid, obj) { diff --git a/src/renderer/src/deviceStore.ts b/src/renderer/src/deviceStore.ts index ff00f6f..f373596 100644 --- a/src/renderer/src/deviceStore.ts +++ b/src/renderer/src/deviceStore.ts @@ -36,6 +36,12 @@ interface Profile { guiEnable: boolean } +interface UpdateData { + a: number | undefined + t: number | undefined + v: number | undefined +} + const { nanoIpc } = window export const useDeviceStore = defineStore('device', { @@ -118,8 +124,14 @@ export const initializeDevices = () => { const deviceStore = useDeviceStore() // register event handlers - nanoIpc.on((eventid, deviceid, ...data) => { - console.log('Received event', eventid, deviceid, data) + nanoIpc.on((eventid, deviceid, dataString) => { + console.log('Received event', eventid, deviceid, dataString) + let update: UpdateData = {} as UpdateData + try { + update = JSON.parse(dataString) as UpdateData + } catch (e) { + console.error(e) + } if (eventid === 'device-attached') { deviceStore.attachDevice(deviceid) if (deviceStore.attachedDeviceIds.length === 1) { @@ -129,15 +141,15 @@ export const initializeDevices = () => { if (eventid === 'device-detached') { deviceStore.detachDevice(deviceid) } - if (eventid === 'device-connected') { + if (eventid === 'connected') { deviceStore.connectDevice(deviceid, false) } - if (eventid === 'device-disconnected') { + if (eventid === 'disconnected') { deviceStore.disconnectDevice(deviceid, false) } if (eventid === 'update') { - if ('a' in data) { - deviceStore.setAngle(data.a as number) + if (update.a) { + deviceStore.setAngle(update.a) } } })