Skip to content

Commit c9e1ec0

Browse files
committed
Add 1.1.0 changes
1 parent 67def7f commit c9e1ec0

File tree

5 files changed

+288
-53
lines changed

5 files changed

+288
-53
lines changed

app.js

Lines changed: 158 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@
88

99
/* global document */
1010

11-
var electron = require('electron');
12-
var clipboard = electron.remote.clipboard;
13-
var menu = electron.remote.Menu;
11+
const electron = require('electron');
12+
const clipboard = electron.remote.clipboard;
13+
const menu = electron.remote.Menu;
14+
const dialog = electron.remote.dialog;
1415

15-
var strftime = require('strftime').utc();
16-
var audiomoth = require('audiomoth-hid');
16+
const strftime = require('strftime').utc();
17+
const audiomoth = require('audiomoth-hid');
18+
19+
const versionChecker = require('./versionChecker.js');
1720

1821
/* UI components */
1922

@@ -31,6 +34,10 @@ var batteryDisplay = document.getElementById('battery-display');
3134

3235
var setTimeButton = document.getElementById('set-time-button');
3336

37+
var communicating = false;
38+
39+
var currentTime, deviceId, firmwareVersion, firmwareDescription;
40+
3441
/* Time display functions */
3542

3643
function initialiseDisplay () {
@@ -67,11 +74,17 @@ function disableDisplay () {
6774

6875
function enableDisplayAndShowTime (date) {
6976

77+
if (communicating) {
78+
79+
return;
80+
81+
}
82+
7083
var strftimeUTC = strftime.timezone(0);
7184

7285
timeDisplay.textContent = strftimeUTC('%H:%M:%S %d/%m/%Y UTC', date);
7386

74-
timeDisplay.style.color = 'black';
87+
timeDisplay.style.color = '';
7588

7689
setTimeButton.disabled = false;
7790

@@ -85,39 +98,39 @@ function enableDisplayAndShowBatteryState (batteryState) {
8598

8699
batteryDisplay.textContent = batteryState;
87100

88-
batteryDisplay.style.color = 'black';
101+
batteryDisplay.style.color = '';
89102

90-
batteryLabel.style.color = 'black';
103+
batteryLabel.style.color = '';
91104

92105
}
93106

94107
function enableDisplayAndShowID (id) {
95108

96109
idDisplay.textContent = id;
97110

98-
idDisplay.style.color = 'black';
111+
idDisplay.style.color = '';
99112

100-
idLabel.style.color = 'black';
113+
idLabel.style.color = '';
101114

102115
}
103116

104117
function enableDisplayAndShowVersionNumber (version) {
105118

106119
firmwareVersionDisplay.textContent = version;
107120

108-
firmwareVersionDisplay.style.color = 'black';
121+
firmwareVersionDisplay.style.color = '';
109122

110-
firmwareVersionLabel.style.color = 'black';
123+
firmwareVersionLabel.style.color = '';
111124

112125
}
113126

114127
function enableDisplayAndShowVersionDescription (description) {
115128

116129
firmwareDescriptionDisplay.textContent = description;
117130

118-
firmwareDescriptionDisplay.style.color = 'black';
131+
firmwareDescriptionDisplay.style.color = '';
119132

120-
firmwareDescriptionLabel.style.color = 'black';
133+
firmwareDescriptionLabel.style.color = '';
121134

122135
}
123136

@@ -147,7 +160,9 @@ function requestFirmwareDescription () {
147160

148161
} else {
149162

150-
enableDisplayAndShowVersionDescription(description);
163+
firmwareDescription = description;
164+
165+
requestFirmwareVersion();
151166

152167
}
153168

@@ -169,9 +184,9 @@ function requestFirmwareVersion () {
169184

170185
} else {
171186

172-
enableDisplayAndShowVersionNumber(versionArr[0] + '.' + versionArr[1] + '.' + versionArr[2]);
187+
firmwareVersion = versionArr[0] + '.' + versionArr[1] + '.' + versionArr[2];
173188

174-
requestFirmwareDescription();
189+
requestBatteryState();
175190

176191
}
177192

@@ -193,10 +208,12 @@ function requestBatteryState () {
193208

194209
} else {
195210

211+
enableDisplayAndShowTime(currentTime);
212+
enableDisplayAndShowID(deviceId);
213+
enableDisplayAndShowVersionDescription(firmwareDescription);
214+
enableDisplayAndShowVersionNumber(firmwareVersion);
196215
enableDisplayAndShowBatteryState(batteryState);
197216

198-
requestFirmwareVersion();
199-
200217
}
201218

202219
});
@@ -217,9 +234,9 @@ function requestID () {
217234

218235
} else {
219236

220-
enableDisplayAndShowID(id);
237+
deviceId = id;
221238

222-
requestBatteryState();
239+
requestFirmwareDescription();
223240

224241
}
225242

@@ -229,6 +246,12 @@ function requestID () {
229246

230247
function requestTime () {
231248

249+
if (communicating) {
250+
251+
return;
252+
253+
}
254+
232255
audiomoth.getTime(function (err, date) {
233256

234257
if (err) {
@@ -241,21 +264,21 @@ function requestTime () {
241264

242265
} else {
243266

244-
enableDisplayAndShowTime(date);
267+
currentTime = date;
245268

246269
requestID();
247270

248271
}
249272

250-
setTimeout(requestTime, 1000);
273+
setTimeout(requestTime, 300);
251274

252275
});
253276

254277
}
255278

256-
function setTime () {
279+
function setTime (time) {
257280

258-
audiomoth.setTime(new Date(), function (err, date) {
281+
audiomoth.setTime(time, function (err, date) {
259282

260283
if (err) {
261284

@@ -269,13 +292,6 @@ function setTime () {
269292

270293
enableDisplayAndShowTime(date);
271294

272-
setTimeButton.style.color = 'green';
273-
setTimeout(function () {
274-
275-
setTimeButton.style.color = '';
276-
277-
}, 1000);
278-
279295
}
280296

281297
});
@@ -295,12 +311,121 @@ electron.ipcRenderer.on('copyID', function () {
295311

296312
});
297313

314+
electron.ipcRenderer.on('update-check', function () {
315+
316+
versionChecker.checkLatestRelease(function (response) {
317+
318+
var buttonIndex;
319+
320+
if (response.error) {
321+
322+
console.error(response.error);
323+
324+
dialog.showMessageBox(electron.remote.getCurrentWindow(), {
325+
type: 'error',
326+
title: 'Failed to check for updates',
327+
message: response.error
328+
});
329+
330+
return;
331+
332+
}
333+
334+
if (response.updateNeeded === false) {
335+
336+
dialog.showMessageBox(electron.remote.getCurrentWindow(), {
337+
type: 'info',
338+
title: 'Update not needed',
339+
message: 'Your app is on the latest version (' + response.latestVersion + ').'
340+
});
341+
342+
return;
343+
344+
}
345+
346+
buttonIndex = dialog.showMessageBoxSync({
347+
type: 'warning',
348+
buttons: ['Yes', 'No'],
349+
title: 'Are you sure?',
350+
message: 'A newer version of this app is available (' + response.latestVersion + '), would you like to download it?'
351+
});
352+
353+
if (buttonIndex === 0) {
354+
355+
electron.shell.openExternal('https://www.openacousticdevices.info/applications');
356+
357+
}
358+
359+
});
360+
361+
});
362+
298363
/* Main code entry point */
299364

300365
disableDisplay();
301366

302367
initialiseDisplay();
303368

304-
setTimeButton.addEventListener('click', setTime);
369+
setTimeButton.addEventListener('click', function () {
370+
371+
var sendTime, now, delay, sendTimeDiff, USB_LAG, MINIMUM_DELAY, MILLISECONDS_IN_SECOND;
372+
373+
communicating = true;
374+
timeDisplay.style.color = 'lightgrey';
375+
376+
USB_LAG = 20;
377+
378+
MINIMUM_DELAY = 100;
379+
380+
MILLISECONDS_IN_SECOND = 1000;
381+
382+
/* Update button */
383+
384+
setTimeButton.disabled = true;
385+
386+
setTimeout(function () {
387+
388+
communicating = false;
389+
390+
requestTime();
391+
392+
setTimeButton.disabled = false;
393+
394+
}, 1500);
395+
396+
/* Increment to next second transition */
397+
398+
sendTime = new Date();
399+
400+
delay = MILLISECONDS_IN_SECOND - sendTime.getMilliseconds() - USB_LAG;
401+
402+
if (delay < MINIMUM_DELAY) delay += MILLISECONDS_IN_SECOND;
403+
404+
sendTime.setMilliseconds(sendTime.getMilliseconds() + delay);
405+
406+
/* Calculate how long to wait until second transition */
407+
408+
now = new Date();
409+
sendTimeDiff = sendTime.getTime() - now.getTime();
410+
411+
/* Either send immediately or wait until the transition */
412+
413+
if (sendTimeDiff <= 0) {
414+
415+
setTime(sendTime);
416+
417+
} else {
418+
419+
console.log('Sending in', sendTimeDiff);
420+
421+
setTimeout(function () {
422+
423+
setTime(sendTime);
424+
425+
}, sendTimeDiff);
426+
427+
}
428+
429+
});
305430

306431
requestTime();

index.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<div class="row" style="margin-left: 0px;">
1515
<div class="col-12" style="text-align: center; padding-top: 5px; padding-bottom: 5px">
1616
<span style="font-size: 25px; font-family: &apos;Lucida Console&apos;, Monaco, monospace">
17-
<div id="time-display" style="display: inline-block;"></div>
17+
<div id="time-display" style="display: inline-block; color: lightgray;"></div>
1818
</span>
1919
</div>
2020
</div>
@@ -25,34 +25,34 @@
2525
<div style="border: #cdcdcd thin solid; margin-left: 15px; width: 543px;">
2626
<div class="row" style="margin-top: 5px;">
2727
<div class="col-6" style="text-align: left;">
28-
<span id="id-label" style="margin-left: 20px;">Device ID:</span>
28+
<span id="id-label" style="margin-left: 20px; color: lightgray;">Device ID:</span>
2929
</div>
3030
<div class="col-6" style="text-align: right;">
31-
<span id="id-display" style="margin-right: 20px; border: none; text-align: right;">0000000000000000</span>
31+
<span id="id-display" style="margin-right: 20px; border: none; text-align: right; color: lightgray;">-</span>
3232
</div>
3333
</div>
3434
<div class="row" style="margin-top: 5px;">
3535
<div class="col-6" style="text-align: left;">
36-
<span id="firmware-description-label" style="margin-left: 20px;">Firmware description:</span>
36+
<span id="firmware-description-label" style="margin-left: 20px; color: lightgray;">Firmware description:</span>
3737
</div>
3838
<div class="col-6" style="text-align: right;">
39-
<span id="firmware-description-display" style="margin-right: 20px;">-</span>
39+
<span id="firmware-description-display" style="margin-right: 20px; color: lightgray;">-</span>
4040
</div>
4141
</div>
4242
<div class="row" style="margin-top: 5px;">
4343
<div class="col-6" style="text-align: left;">
44-
<span id="firmware-version-label" style="margin-left: 20px;">Firmware version:</span>
44+
<span id="firmware-version-label" style="margin-left: 20px; color: lightgray;">Firmware version:</span>
4545
</div>
4646
<div class="col-6" style="text-align: right;">
47-
<span id="firmware-version-display" style="margin-right: 20px;">0.0.0</span>
47+
<span id="firmware-version-display" style="margin-right: 20px; color: lightgray;">-</span>
4848
</div>
4949
</div>
5050
<div class="row" style="margin-top: 5px; margin-bottom: 5px;">
5151
<div class="col-6" style="text-align: left;">
52-
<span id="battery-label" style="margin-left: 20px;">Battery:</span>
52+
<span id="battery-label" style="margin-left: 20px; color: lightgray;">Battery:</span>
5353
</div>
5454
<div class="col-6" style="text-align: right;">
55-
<span id="battery-display" style="margin-right: 20px;">0.0V</span>
55+
<span id="battery-display" style="margin-right: 20px; color: lightgray;">-</span>
5656
</div>
5757
</div>
5858
</div>

main.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,13 @@ app.on('ready', function () {
111111

112112
openAboutWindow();
113113

114+
}
115+
}, {
116+
label: 'Check For Updates',
117+
click: function () {
118+
119+
mainWindow.webContents.send('update-check');
120+
114121
}
115122
}, {
116123
type: 'separator'

0 commit comments

Comments
 (0)