diff --git a/modules/default/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js
index a94e7269..3841223b 100644
--- a/modules/default/newsfeed/newsfeed.js
+++ b/modules/default/newsfeed/newsfeed.js
@@ -66,6 +66,7 @@ Module.register("newsfeed", {
this.newsItems = [];
this.loaded = false;
+ this.error = null;
this.activeItem = 0;
this.scrollPosition = 0;
@@ -87,8 +88,10 @@ Module.register("newsfeed", {
}
this.loaded = true;
+ this.error = null;
} else if (notification === "INCORRECT_URL") {
- Log.error("Newsfeed Error. Incorrect url: " + payload.url);
+ this.error = "Newsfeed Error. Incorrect url: " + payload.url;
+ this.scheduleUpdateInterval();
}
},
@@ -110,15 +113,20 @@ Module.register("newsfeed", {
url: this.getActiveItemURL()
};
}
+ if (this.error) {
+ return {
+ error: this.error
+ };
+ }
if (this.newsItems.length === 0) {
return {
loaded: false
};
}
-
if (this.activeItem >= this.newsItems.length) {
this.activeItem = 0;
}
+
const item = this.newsItems[this.activeItem];
return {
diff --git a/modules/default/newsfeed/newsfeed.njk b/modules/default/newsfeed/newsfeed.njk
index 3d9ecc0b..f19807c6 100644
--- a/modules/default/newsfeed/newsfeed.njk
+++ b/modules/default/newsfeed/newsfeed.njk
@@ -6,7 +6,7 @@
{{ sourceTitle }}{% if config.showPublishDate %}, {% else %}: {% endif %}
{% endif %}
{% if config.showPublishDate %}
- {{ publishDate }}:
+ {{ publishDate }}:
{% endif %}
{% endif %}
@@ -21,8 +21,12 @@
{% endif %}
+{% elseif error %}
+
+ {{ error }}
+
{% else %}
{{ "LOADING" | translate | safe }}
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/modules/default/newsfeed/node_helper.js b/modules/default/newsfeed/node_helper.js
index 8d365339..db7b82f3 100644
--- a/modules/default/newsfeed/node_helper.js
+++ b/modules/default/newsfeed/node_helper.js
@@ -38,7 +38,7 @@ module.exports = NodeHelper.create({
try {
new URL(url);
} catch (error) {
- this.sendSocketNotification("INCORRECT_URL", { url: url });
+ this.sendSocketNotification("INCORRECT_URL", { url });
return;
}
diff --git a/tests/configs/modules/newsfeed/default.js b/tests/configs/modules/newsfeed/default.js
index 4355a2b5..94c9a47f 100644
--- a/tests/configs/modules/newsfeed/default.js
+++ b/tests/configs/modules/newsfeed/default.js
@@ -3,8 +3,7 @@
* By Rodrigo RamÃrez Norambuena https://rodrigoramirez.com
* MIT Licensed.
*/
-
-var config = {
+let config = {
port: 8080,
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
diff --git a/tests/configs/modules/newsfeed/incorrect_url.js b/tests/configs/modules/newsfeed/incorrect_url.js
new file mode 100644
index 00000000..110a1968
--- /dev/null
+++ b/tests/configs/modules/newsfeed/incorrect_url.js
@@ -0,0 +1,38 @@
+/* Magic Mirror Test config newsfeed module
+ *
+ * MIT Licensed.
+ */
+let config = {
+ port: 8080,
+ ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
+
+ language: "en",
+ timeFormat: 12,
+ units: "metric",
+ electronOptions: {
+ webPreferences: {
+ nodeIntegration: true,
+ enableRemoteModule: true
+ }
+ },
+
+ modules: [
+ {
+ module: "newsfeed",
+ position: "bottom_bar",
+ config: {
+ feeds: [
+ {
+ title: "Incorrect Url",
+ url: "this is not a valid url"
+ }
+ ]
+ }
+ }
+ ]
+};
+
+/*************** DO NOT EDIT THE LINE BELOW ***************/
+if (typeof module !== "undefined") {
+ module.exports = config;
+}
diff --git a/tests/e2e/modules/newsfeed_spec.js b/tests/e2e/modules/newsfeed_spec.js
index 9c9ee2ca..78874cc6 100644
--- a/tests/e2e/modules/newsfeed_spec.js
+++ b/tests/e2e/modules/newsfeed_spec.js
@@ -8,7 +8,7 @@ const afterEach = global.afterEach;
describe("Newsfeed module", function () {
helpers.setupTimeout(this);
- var app = null;
+ let app = null;
beforeEach(function () {
return helpers
@@ -29,8 +29,18 @@ describe("Newsfeed module", function () {
process.env.MM_CONFIG_FILE = "tests/configs/modules/newsfeed/default.js";
});
- it("show title newsfeed", function () {
+ it("should show the newsfeed title", function () {
return app.client.waitUntilTextExists(".newsfeed .small", "Rodrigo Ramirez Blog", 10000).should.be.fulfilled;
});
});
+
+ describe("Invalid configuration", function () {
+ before(function () {
+ process.env.MM_CONFIG_FILE = "tests/configs/modules/newsfeed/incorrect_url.js";
+ });
+
+ it("should show invalid url warning", function () {
+ return app.client.waitUntilTextExists(".newsfeed .small", "Newsfeed Error. Incorrect url:", 10000).should.be.fulfilled;
+ });
+ });
});