mirror of https://github.com/espruino/BangleApps
weather: delete stale weather data
parent
3693d6ebce
commit
eed9868b76
|
@ -392,7 +392,8 @@
|
|||
{"name":"weather.app.js","url":"app.js"},
|
||||
{"name":"weather.wid.js","url":"widget.js"},
|
||||
{"name":"weather","url":"lib.js"},
|
||||
{"name":"weather.img","url":"icon.js","evaluate":true}
|
||||
{"name":"weather.img","url":"icon.js","evaluate":true},
|
||||
{"name":"weather.settings.js","url":"settings.js"}
|
||||
],
|
||||
"data": [
|
||||
{"name": "weather.json"}
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
let expiryTimeout = undefined;
|
||||
function updateExpiry(json) {
|
||||
if (expiryTimeout) {
|
||||
clearTimeout(expiryTimeout);
|
||||
expiryTimeout = undefined;
|
||||
}
|
||||
if (json.weather && json.weather.time && json.expiry) {
|
||||
let t = json.weather.time + json.expiry - Date.now();
|
||||
expiryTimeout = setTimeout(() => {
|
||||
expiryTimeout = undefined;
|
||||
let json = require('Storage').readJSON('weather.json')||{};
|
||||
delete json.weather;
|
||||
require('Storage').write('weather.json', json);
|
||||
exports.emit("expiry");
|
||||
}, t);
|
||||
}
|
||||
}
|
||||
|
||||
exports = {
|
||||
save: weather => {
|
||||
let json = require('Storage').readJSON('weather.json')||{};
|
||||
|
@ -5,6 +23,7 @@ exports = {
|
|||
delete json.weather.t; // don't save the event type (if present)
|
||||
json.weather.time = Date.now();
|
||||
require('Storage').write('weather.json', json);
|
||||
updateExpiry(json);
|
||||
},
|
||||
load: () => {
|
||||
let json = require('Storage').readJSON('weather.json')||{};
|
||||
|
@ -175,3 +194,5 @@ exports = {
|
|||
chooseIcon(cond)(x, y, r);
|
||||
},
|
||||
}
|
||||
|
||||
updateExpiry(require('Storage').readJSON('weather.json')||{});
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
(function(back) {
|
||||
const storage = require('Storage');
|
||||
let settings = storage.readJSON('weather.json', 1) || {};
|
||||
function save(key, value) {
|
||||
settings[key] = value;
|
||||
storage.write('weather.json', settings);
|
||||
}
|
||||
E.showMenu({
|
||||
'': { 'title': 'Weather' },
|
||||
'Expiry': {
|
||||
value: "expiry" in settings ? settings["expiry"] : 2*3600000,
|
||||
min: 0,
|
||||
max : 24*3600000,
|
||||
step: 15*60000,
|
||||
format: x => {
|
||||
if (x == 0) return "none";
|
||||
if (x < 3600000) return Math.floor(x/60000) + "m";
|
||||
if (x < 86400000) return Math.floor(x/36000)/100 + "h";
|
||||
},
|
||||
onchange: x => save('expiry', x),
|
||||
},
|
||||
'< Back': back,
|
||||
});
|
||||
})
|
|
@ -44,6 +44,11 @@
|
|||
if (_GB) setTimeout(_GB, 0, event);
|
||||
};
|
||||
|
||||
require('weather').on("expiry", () => {
|
||||
WIDGETS["weather"].width = 0;
|
||||
Bangle.drawWidgets();
|
||||
});
|
||||
|
||||
WIDGETS["weather"] = {area: "tl", width: 20, draw: draw};
|
||||
if (!require('weather').load()) {
|
||||
WIDGETS["weather"].width = 0;
|
||||
|
|
Loading…
Reference in New Issue