From cd9ad0bb820cadf11474a1ba23c038ae4833c17d Mon Sep 17 00:00:00 2001 From: Stefania Date: Fri, 7 Jun 2019 15:08:47 +0200 Subject: [PATCH 1/2] change error forwarding strategy for serial open and close --- demo/app.jsx | 4 ++++ src/chrome-app-daemon.js | 8 ++++---- src/daemon.js | 1 + src/socket-daemon.js | 6 +++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/demo/app.jsx b/demo/app.jsx index a3fc8911..5daa479d 100644 --- a/demo/app.jsx +++ b/demo/app.jsx @@ -121,6 +121,9 @@ class App extends React.Component { }); daemon.error.subscribe(this.showError); + daemon.serialMonitorError.subscribe(this.showError); + daemon.uploadingError.subscribe(this.showError); + daemon.downloadingError.subscribe(this.showError); daemon.devicesList.subscribe(({ serial, network }) => this.setState({ serialDevices: serial, @@ -155,6 +158,7 @@ class App extends React.Component { showError(err) { this.setState({ error: err }); + scrollToBottom(document.body); } clearError() { diff --git a/src/chrome-app-daemon.js b/src/chrome-app-daemon.js index 6f38f6f3..753bb31f 100644 --- a/src/chrome-app-daemon.js +++ b/src/chrome-app-daemon.js @@ -158,7 +158,7 @@ export default class ChromeOsDaemon extends Daemon { } const serialPort = this.devicesList.getValue().serial.find(p => p.Name === port); if (!serialPort) { - return this.serialMonitorOpened.error(new Error(`Can't find port ${port}`)); + return this.serialMonitorError.next(`Can't find port ${port}`); } this.appMessages .pipe(takeUntil(this.serialMonitorOpened.pipe(filter(open => open)))) @@ -167,7 +167,7 @@ export default class ChromeOsDaemon extends Daemon { this.serialMonitorOpened.next(true); } if (message.portOpenStatus === 'error') { - this.serialMonitorOpened.error(new Error(`Failed to open serial ${port}`)); + this.serialMonitorError.next(`Failed to open serial ${port}`); } }); this.channel.postMessage({ @@ -189,7 +189,7 @@ export default class ChromeOsDaemon extends Daemon { } const serialPort = this.devicesList.getValue().serial.find(p => p.Name === port); if (!serialPort) { - return this.serialMonitorOpened.error(new Error(`Can't find port ${port}`)); + return this.serialMonitorError.next(`Can't find port ${port}`); } this.appMessages .pipe(takeUntil(this.serialMonitorOpened.pipe(filter(open => !open)))) @@ -198,7 +198,7 @@ export default class ChromeOsDaemon extends Daemon { this.serialMonitorOpened.next(false); } if (message.portCloseStatus === 'error') { - this.serialMonitorOpened.error(new Error(`Failed to close serial ${port}`)); + this.serialMonitorError.next(`Failed to close serial ${port}`); } }); this.channel.postMessage({ diff --git a/src/daemon.js b/src/daemon.js index 343dd863..733c4a6e 100644 --- a/src/daemon.js +++ b/src/daemon.js @@ -45,6 +45,7 @@ export default class Daemon { this.channelOpen = new BehaviorSubject(null); this.channelOpenStatus = this.channelOpen.pipe(distinctUntilChanged()); this.error = new BehaviorSubject(null).pipe(distinctUntilChanged()); + this.serialMonitorError = new BehaviorSubject(null); this.appMessages = new Subject(); this.serialMonitorOpened = new BehaviorSubject(false); diff --git a/src/socket-daemon.js b/src/socket-daemon.js index dd3a5ec0..239d95f3 100644 --- a/src/socket-daemon.js +++ b/src/socket-daemon.js @@ -336,7 +336,7 @@ export default class SocketDaemon extends Daemon { openSerialMonitor(port, baudrate = 9600) { const serialPort = this.devicesList.getValue().serial.find(p => p.Name === port); if (!serialPort) { - return this.serialMonitorOpened.error(new Error(`Can't find board at ${port}`)); + return this.serialMonitorError.next(`Can't find board at ${port}`); } if (this.uploading.getValue().status === this.UPLOAD_IN_PROGRESS || serialPort.IsOpen) { return; @@ -349,7 +349,7 @@ export default class SocketDaemon extends Daemon { this.serialMonitorOpened.next(true); } if (message.Cmd === 'OpenFail') { - this.serialMonitorOpened.error(new Error(`Failed to open serial monitor at ${port}`)); + this.serialMonitorError.next(`Failed to open serial monitor at ${port}`); } }); @@ -373,7 +373,7 @@ export default class SocketDaemon extends Daemon { this.serialMonitorOpened.next(false); } if (message.Cmd === 'CloseFail') { - this.serialMonitorOpened.error(new Error(`Failed to close serial monitor at ${port}`)); + this.serialMonitorError.next(`Failed to close serial monitor at ${port}`); } }); this.socket.emit('command', `close ${port}`); From 52429d45066dfe66ee773830f12286a5fc810034 Mon Sep 17 00:00:00 2001 From: Stefania Date: Fri, 7 Jun 2019 15:08:57 +0200 Subject: [PATCH 2/2] 2.3.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6451fde1..9aad751e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "arduino-create-agent-js-client", - "version": "2.2.6", + "version": "2.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 50a6f8f2..6963adf3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "arduino-create-agent-js-client", - "version": "2.2.6", + "version": "2.3.0", "description": "JS module providing discovery of the Arduino Create Plugin and communication with it", "main": "lib/index.js", "module": "es/index.js",