Skip to content

Commit f7a0def

Browse files
author
Stefania
committed
Merge branch 'refactoring-rxjs' of github.com:bcmi-labs/create-plugin-communication into refactoring-rxjs
2 parents 36fd555 + e71b1d1 commit f7a0def

File tree

3 files changed

+62
-16
lines changed

3 files changed

+62
-16
lines changed

src/daemon.js

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default class Daemon {
1313
this.socketMessages = new Subject();
1414
this.serialMonitorOpened = new BehaviorSubject(false);
1515
this.serialMonitorMessages = new Subject();
16-
this.uploading = new BehaviorSubject();
16+
this.uploading = new BehaviorSubject({ status: UPLOAD_STATUS_NOPE });
1717
this.devicesList = new BehaviorSubject({
1818
serial: [],
1919
network: []
@@ -60,25 +60,66 @@ export default class Daemon {
6060
handleSocketMessage(message) {
6161
// Result of a list command
6262
if (message.Ports) {
63-
const lastDevices = this.devicesList.getValue();
64-
if (message.Network && !Daemon.devicesListAreEquals(lastDevices.network, message.Ports)) {
65-
this.devicesList.next({
66-
serial: lastDevices.serial,
67-
network: message.Ports
68-
});
69-
}
70-
else if (!message.Network && !Daemon.devicesListAreEquals(lastDevices.serial, message.Ports)) {
71-
this.devicesList.next({
72-
serial: message.Ports,
73-
network: lastDevices.network
74-
});
75-
}
63+
this.handleListMessage(message);
7664
}
7765
// Serial monitor message
7866
if (message.D) {
7967
this.serialMonitorMessages.next(message.D);
8068
}
81-
// if (message.ProgrammerStatus )
69+
70+
if (message.ProgrammerStatus) {
71+
this.handleUploadMessage(message);
72+
}
73+
74+
if (message.Err) {
75+
this.uploading.next({ status: UPLOAD_STATUS_ERROR, err: message.Err });
76+
}
77+
}
78+
79+
handleListMessage(message) {
80+
const lastDevices = this.devicesList.getValue();
81+
if (message.Network && !Daemon.devicesListAreEquals(lastDevices.network, message.Ports)) {
82+
this.devicesList.next({
83+
serial: lastDevices.serial,
84+
network: message.Ports
85+
});
86+
}
87+
else if (!message.Network && !Daemon.devicesListAreEquals(lastDevices.serial, message.Ports)) {
88+
this.devicesList.next({
89+
serial: message.Ports,
90+
network: lastDevices.network
91+
});
92+
}
93+
}
94+
95+
handleUploadMessage(message) {
96+
if (this.uploading.getValue().status !== UPLOAD_STATUS_IN_PROGRESS) {
97+
return;
98+
}
99+
if (message.Flash === 'Ok' && message.ProgrammerStatus === 'Done') {
100+
this.uploading.next({ status: UPLOAD_STATUS_DONE, msg: message.Flash });
101+
return;
102+
}
103+
switch (message.ProgrammerStatus) {
104+
case 'Starting':
105+
this.uploading.next({ status: UPLOAD_STATUS_IN_PROGRESS, msg: `Programming with: ${message.Cmd}` });
106+
break;
107+
case 'Busy':
108+
this.uploading.next({ status: UPLOAD_STATUS_IN_PROGRESS, msg: message.Msg });
109+
break;
110+
case 'Error':
111+
this.uploading.next({ status: UPLOAD_STATUS_ERROR, err: message.Msg });
112+
break;
113+
case 'Killed':
114+
this.uploading.next({ status: UPLOAD_STATUS_IN_PROGRESS, msg: `terminated by user` });
115+
this.uploading.next({ status: UPLOAD_STATUS_ERROR, err: `terminated by user` });
116+
break;
117+
case 'Error 404 Not Found':
118+
this.uploading.next({ status: UPLOAD_STATUS_ERROR, err: message.Msg });
119+
break;
120+
default:
121+
this.uploading.next({ status: UPLOAD_STATUS_IN_PROGRESS, msg: message.Msg });
122+
}
82123
}
83124

84125
writeSerial(port, data) {

test/app.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,9 @@ class App extends React.Component {
7373
scrollToBottom(serialTextarea);
7474
});
7575

76-
this.uploadingSubscription = daemon.uploading.subscribe(upload => {
76+
daemon.uploading.subscribe(upload => {
7777
this.setState({ uploadStatus: upload.status });
78+
console.log(upload);
7879
});
7980
}
8081

test/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
background: #f9f9f9;
1818
}
1919

20+
.in-progress {
21+
color: blue;
22+
}
23+
2024
#serial-textarea {
2125
height: 300px;
2226
}

0 commit comments

Comments
 (0)