From 7596bc527f5b995bedd6a77ed71b6e1feba1364d Mon Sep 17 00:00:00 2001
From: Bastien Wirtz <bastien.wirtz@gmail.com>
Date: Wed, 21 Apr 2021 22:09:01 -0700
Subject: Fix null error releated to refreshInterval + cleanup. Fix #210

---
 src/components/Message.vue | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

(limited to 'src/components/Message.vue')

diff --git a/src/components/Message.vue b/src/components/Message.vue
index 7c6acdd..6cc649a 100644
--- a/src/components/Message.vue
+++ b/src/components/Message.vue
@@ -42,19 +42,29 @@ export default {
   },
   methods: {
     getMessage: async function () {
-      if (this.item && this.item.url) {
+      if (!this.item) {
+        return;
+      }
+      if (this.item.url) {
         let fetchedMessage = await this.downloadMessage(this.item.url);
-        if (this.item.mapping)
+        console.log("done");
+        if (this.item.mapping) {
           fetchedMessage = this.mapRemoteMessage(fetchedMessage);
+        }
+
         // keep the original config value if no value is provided by the endpoint
+        const message = this.message;
         for (const prop of ["title", "style", "content"]) {
           if (prop in fetchedMessage && fetchedMessage[prop] !== null) {
-            this.message[prop] = fetchedMessage[prop];
+            message[prop] = fetchedMessage[prop];
           }
         }
+        this.message = { ...message }; // Force computed property to re-evaluate
       }
-      if (this.item.refreshInterval)
+
+      if (this.item.refreshInterval) {
         setTimeout(this.getMessage, this.item.refreshInterval);
+      }
     },
 
     downloadMessage: function (url) {
-- 
cgit v1.2.3

