diff --git a/js/node_helper.js b/js/node_helper.js index 415ae658..3ecca4ce 100644 --- a/js/node_helper.js +++ b/js/node_helper.js @@ -122,6 +122,14 @@ NodeHelper.checkFetchStatus = function (response) { } }; +NodeHelper.checkFetchError = function (error) { + let error_type = "MODULE_ERROR_UNSPECIFIED"; + if (error.code === "EAI_AGAIN") { + error_type = "MODULE_ERROR_NO_CONNECTION"; + } + return error_type; +}; + NodeHelper.create = function (moduleDefinition) { return NodeHelper.extend(moduleDefinition); }; diff --git a/modules/default/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js index 00b07b81..bc033a19 100644 --- a/modules/default/newsfeed/newsfeed.js +++ b/modules/default/newsfeed/newsfeed.js @@ -89,11 +89,8 @@ Module.register("newsfeed", { this.loaded = true; this.error = null; - } else if (notification === "FETCH_ERROR") { - this.error = `${payload.error}`; - this.scheduleUpdateInterval(); - } else if (notification === "INCORRECT_URL") { - this.error = `Incorrect url: ${payload.url}`; + } else if (notification === "NEWSFEED_ERROR") { + this.error = this.translate(payload.error_type); this.scheduleUpdateInterval(); } }, diff --git a/modules/default/newsfeed/newsfeedfetcher.js b/modules/default/newsfeed/newsfeedfetcher.js index bbfda9e1..6dd8683a 100644 --- a/modules/default/newsfeed/newsfeedfetcher.js +++ b/modules/default/newsfeed/newsfeedfetcher.js @@ -90,7 +90,7 @@ const NewsfeedFetcher = function (url, reloadInterval, encoding, logFeedWarnings response.body.pipe(iconv.decodeStream(encoding)).pipe(parser); }) .catch((error) => { - fetchFailedCallback(this, error.message); + fetchFailedCallback(this, error); scheduleTimer(); }); }; diff --git a/modules/default/newsfeed/node_helper.js b/modules/default/newsfeed/node_helper.js index 926b9d3d..55f403db 100644 --- a/modules/default/newsfeed/node_helper.js +++ b/modules/default/newsfeed/node_helper.js @@ -38,7 +38,8 @@ module.exports = NodeHelper.create({ try { new URL(url); } catch (error) { - this.sendSocketNotification("INCORRECT_URL", { url: url }); + Log.error("Newsfeed Error. Malformed newsfeed url: ", url, error); + this.sendSocketNotification("NEWSFEED_ERROR", { error_type: "MODULE_ERROR_MALFORMED_URL" }); return; } @@ -52,10 +53,10 @@ module.exports = NodeHelper.create({ }); fetcher.onError((fetcher, error) => { - Log.error("Newsfeed Error. Could not fetch newsfeed: ", fetcher.url(), error); - this.sendSocketNotification("FETCH_ERROR", { - url: fetcher.url(), - error: error + Log.error("Newsfeed Error. Could not fetch newsfeed: ", url, error); + let error_type = NodeHelper.checkFetchError(error); + this.sendSocketNotification("NEWSFEED_ERROR", { + error_type }); }); diff --git a/translations/en.json b/translations/en.json index 9710d781..82748e6b 100644 --- a/translations/en.json +++ b/translations/en.json @@ -30,6 +30,9 @@ "MODULE_CONFIG_CHANGED": "The configuration options for the {MODULE_NAME} module have changed.\nPlease check the documentation.", "MODULE_CONFIG_ERROR": "Error in the {MODULE_NAME} module. {ERROR}", + "MODULE_ERROR_MALFORMED_URL": "Malformed url.", + "MODULE_ERROR_NO_CONNECTION": "No internet connection.", + "MODULE_ERROR_UNSPECIFIED": "Check logs for more details.", "UPDATE_NOTIFICATION": "MagicMirror² update available.", "UPDATE_NOTIFICATION_MODULE": "Update available for {MODULE_NAME} module.",