weather: delete stale weather data

pull/443/head
Ben Whittaker 2020-05-23 22:37:38 -04:00
parent 3693d6ebce
commit eed9868b76
4 changed files with 52 additions and 1 deletions

View File

@ -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"}

View File

@ -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')||{});

24
apps/weather/settings.js Normal file
View File

@ -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,
});
})

View File

@ -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;