diff --git a/CHANGELOG.md b/CHANGELOG.md index fa3d52ba..0ae0a19f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ Special thanks to the following contributors: @B1gG, @codac, @ezeholz, @khassel, - Fix calendar start function logging inconsistency. - Fix updatenotification start function logging inconsistency. - Checks and applies the showDescription setting for the newsfeed module again +- Fix issue with openweathermap not showing current or forecast info when using onecall API - Fix tests in weather module and add one for decimalPoint in forecast - Fix decimalSymbol in the forecast part of the new weather module #2530 - Fix wrong treatment of `appendLocationNameToHeader` when using `ukmetofficedatahub` diff --git a/modules/default/weather/providers/openweathermap.js b/modules/default/weather/providers/openweathermap.js index 2d0645fc..bbe74d3b 100755 --- a/modules/default/weather/providers/openweathermap.js +++ b/modules/default/weather/providers/openweathermap.js @@ -30,16 +30,14 @@ WeatherProvider.register("openweathermap", { fetchCurrentWeather() { this.fetchData(this.getUrl()) .then((data) => { - if (!data || !data.main || typeof data.main.temp === "undefined") { - // Did not receive usable new data. - // Maybe this needs a better check? - return; + if (this.config.weatherEndpoint === "/onecall") { + const weatherData = this.generateWeatherObjectsFromOnecall(data); + this.setCurrentWeather(weatherData.current); + this.setFetchedLocation(`${data.timezone}`); + } else { + const currentWeather = this.generateWeatherObjectFromCurrentWeather(data); + this.setCurrentWeather(currentWeather); } - - this.setFetchedLocation(`${data.name}, ${data.sys.country}`); - - const currentWeather = this.generateWeatherObjectFromCurrentWeather(data); - this.setCurrentWeather(currentWeather); }) .catch(function (request) { Log.error("Could not load data ... ", request); @@ -51,16 +49,15 @@ WeatherProvider.register("openweathermap", { fetchWeatherForecast() { this.fetchData(this.getUrl()) .then((data) => { - if (!data || !data.list || !data.list.length) { - // Did not receive usable new data. - // Maybe this needs a better check? - return; + if (this.config.weatherEndpoint === "/onecall") { + const weatherData = this.generateWeatherObjectsFromOnecall(data); + this.setWeatherForecast(weatherData.days); + this.setFetchedLocation(`${data.timezone}`); + } else { + const forecast = this.generateWeatherObjectsFromForecast(data.list); + this.setWeatherForecast(forecast); + this.setFetchedLocation(`${data.city.name}, ${data.city.country}`); } - - this.setFetchedLocation(`${data.city.name}, ${data.city.country}`); - - const forecast = this.generateWeatherObjectsFromForecast(data.list); - this.setWeatherForecast(forecast); }) .catch(function (request) { Log.error("Could not load data ... ", request);