Skip to content

Commit 1bd10df

Browse files
Refactor data structure, change update conditions
1 parent dee5018 commit 1bd10df

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

apps/airqualityci/clkinfo.js

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,30 @@
44

55
function checkAQI(cb) {
66
let d = new Date();
7-
if (config.apiKey && config.rows && (data.aqiTime === undefined || data.aqiTime + 3600000 < d.getTime())) {
8-
data.aqi = [];
7+
if (config.apiKey && config.rows) {
98
config.rows.forEach((row) => {
109
if (row.url) {
1110
let el = row.url.replace(/\/$/, "").split("/").reverse();
1211
let url = `https://api.airvisual.com/v2/city?city=${el[0]}&state=${el[1]}&country=${el[2]}&key=${config.apiKey}`;
13-
Bangle.http(url).then((r) => {
14-
let resp = JSON.parse(r.resp);
15-
data.aqiTime = d.getTime();
16-
data.aqi.push({
17-
url: row.url,
18-
aqius: resp.data.current.pollution.aqius,
19-
temp: resp.data.current.weather.tp
12+
data[row.url] = data[row.url] || {};
13+
// If neither attempt nor time are set, then we have never tried
14+
// If attempt was set more than 1 minute ago, try again
15+
// If time was set more than 1 hour ago, refresh
16+
if ((!data[row.url].time && !data[row.url].attempt) ||
17+
(data[row.url].attempt && data[row.url].attempt + 60000 < d.getTime()) ||
18+
(data[row.url].time && data[row.url].time + 3600000 < d.getTime())) {
19+
data[row.url].attempt = d.getTime();
20+
Bangle.http(url).then((r) => {
21+
let resp = JSON.parse(r.resp);
22+
data[row.url] = {
23+
aqius: resp.data.current.pollution.aqius,
24+
temp: resp.data.current.weather.tp,
25+
time: d.getTime()
26+
}
27+
cb();
28+
require("Storage").writeJSON("airqualityci.json", data);
2029
});
21-
cb();
22-
require("Storage").writeJSON("airqualityci.json", data);
23-
});
30+
}
2431
}
2532
});
2633
}
@@ -50,7 +57,7 @@
5057
},
5158
get: function() {
5259
checkAQI(() => this.emit("redraw"));
53-
let aqi = data.aqi.find((e) => e.url == config.rows[id].url);
60+
let aqi = data[config.rows[id].url]
5461
let txt = "";
5562
switch ( config.rows[id].mode) {
5663
case 2:

0 commit comments

Comments
 (0)