]> git.immae.eu Git - github/bastienwirtz/homer.git/blobdiff - app.js
Merge branch 'master' into dynamic-message
[github/bastienwirtz/homer.git] / app.js
diff --git a/app.js b/app.js
index 40830da1a457f3053b4ff230b54e0814c0add6a2..6c2ba9078ef73da8214034e360530a33e7a3a55c 100644 (file)
--- a/app.js
+++ b/app.js
@@ -7,7 +7,7 @@ const app = new Vue({
         vlayout: true,
         isDark: null
     },
-    created: function () {
+    created: async function () {
         let that = this;
 
         this.isDark = 'overrideDark' in localStorage ?
@@ -18,11 +18,23 @@ const app = new Vue({
         }
 
         this.checkOffline();
-        that.getConfig().then(function (config) {
-            that.config = config;
-        }).catch(function () {
-            that.offline = true;
-        });
+        try {
+            this.config =  await this.getConfig();
+        } catch (error) {
+            this.offline = true;
+        }
+
+        // Look for a new message if an endpoint is provided.
+        if (this.config.message.url) {
+            this.getMessage(this.config.message.url).then(function(message){
+                // keep the original config value if no value is provided by the endpoint
+                for (const prop of ['title','style','content']) {
+                    if (prop in message && message[prop] !== null) {
+                        that.config.message[prop] = message[prop];
+                    }    
+                }
+            });
+        }
 
         document.addEventListener('visibilitychange', function () {
             if (document.visibilityState == "visible") {
@@ -52,6 +64,14 @@ const app = new Vue({
                 });
             });
         },
+        getMessage: function (url) {
+            return fetch(url).then(function (response) {
+                if (response.status != 200) {
+                    return;
+                }
+                return response.json();
+            });
+        },
         toggleTheme: function() {
             this.isDark = !this.isDark;
             localStorage.overrideDark = this.isDark;