diff --git a/apps/owmweather/boot.js b/apps/owmweather/boot.js index 120cb6f65..203aaad19 100644 --- a/apps/owmweather/boot.js +++ b/apps/owmweather/boot.js @@ -11,7 +11,7 @@ "location": "London" }; - Bangle.pullOwmWeather = function(force) { + Bangle.pullOwmWeather = function(force, completionCallback) { if (!force && responsePromise){ print("Waiting for response"); return; @@ -22,11 +22,13 @@ if (Bangle.http){ responsePromise = Bangle.http(uri, {id:"debug"}).then(event => { print("Got event ", event); - parseWeather(event.resp); + let result = parseWeather(event.resp); responsePromise = false; + if (completionCallback) completionCallback(result); }).catch((e)=>{ print("Rejected call", e); responsePromise = false; + if (completionCallback) completionCallback(e); }); } else { print("No http method found"); @@ -64,6 +66,9 @@ print("Parsed data", json); require("Storage").writeJSON('weather.json', json); require("weather").emit("update", json.weather); + return undefined; + } else { + return "Not OWM data"; } }; diff --git a/apps/owmweather/settings.js b/apps/owmweather/settings.js index 20fee24c7..7d3ce20b8 100644 --- a/apps/owmweather/settings.js +++ b/apps/owmweather/settings.js @@ -37,7 +37,20 @@ writeSettings("refresh",Math.round(v * 60)); } }, - "Force refresh": Bangle.pullOwmWeather + "Force refresh": ()=>{ + E.showMessage("Reloading weather"); + Bangle.pullOwmWeather(true, (e)=>{ + if (e) { + E.showAlert(e,"Error").then(()=>{ + E.showMenu(buildMainMenu()); + }); + } else { + E.showAlert("Success").then(()=>{ + E.showMenu(buildMainMenu()); + }); + } + }); + } }; mainmenu["API key"] = function (){