aboutsummaryrefslogtreecommitdiffhomepage
path: root/app.js
diff options
context:
space:
mode:
authorBastien Wirtz <bastien.wirtz@gmail.com>2019-12-17 14:10:04 -0800
committerBastien Wirtz <bastien.wirtz@gmail.com>2019-12-17 14:10:04 -0800
commit7fd9dc6f10a30748cf63caf61ee71f602407d6ac (patch)
tree33bb97b0645605e3875326292cdc99b654fe5249 /app.js
parent05bdc2680193564dbb8acbd85aa8d79eeec546f5 (diff)
downloadhomer-7fd9dc6f10a30748cf63caf61ee71f602407d6ac.tar.gz
homer-7fd9dc6f10a30748cf63caf61ee71f602407d6ac.tar.zst
homer-7fd9dc6f10a30748cf63caf61ee71f602407d6ac.zip
Optionaly load message from an endpoint.
Diffstat (limited to 'app.js')
-rw-r--r--app.js34
1 files changed, 27 insertions, 7 deletions
diff --git a/app.js b/app.js
index def0be7..93902d8 100644
--- a/app.js
+++ b/app.js
@@ -7,9 +7,9 @@ const app = new Vue({
7 vlayout: true, 7 vlayout: true,
8 isDark: null 8 isDark: null
9 }, 9 },
10 created: function () { 10 created: async function () {
11 let that = this; 11 let that = this;
12 12
13 this.isDark = 'overrideDark' in localStorage ? 13 this.isDark = 'overrideDark' in localStorage ?
14 JSON.parse(localStorage.overrideDark) : matchMedia("(prefers-color-scheme: dark)").matches; 14 JSON.parse(localStorage.overrideDark) : matchMedia("(prefers-color-scheme: dark)").matches;
15 15
@@ -18,11 +18,23 @@ const app = new Vue({
18 } 18 }
19 19
20 this.checkOffline(); 20 this.checkOffline();
21 that.getConfig().then(function (config) { 21 try {
22 that.config = config; 22 this.config = await this.getConfig();
23 }).catch(function () { 23 } catch (error) {
24 that.offline = true; 24 this.offline = true;
25 }); 25 }
26
27 // Look for a new message if an endpoint is provided.
28 if (this.config.message.url) {
29 this.getMessage(this.config.message.url).then(function(message){
30 // keep the original config value if no value is provided by the endpoint
31 for (const prop of ['title','style','content']) {
32 if (prop in message && message[prop] !== null) {
33 that.config.message[prop] = message[prop];
34 }
35 }
36 });
37 }
26 38
27 document.addEventListener('visibilitychange', function () { 39 document.addEventListener('visibilitychange', function () {
28 if (document.visibilityState == "visible") { 40 if (document.visibilityState == "visible") {
@@ -52,6 +64,14 @@ const app = new Vue({
52 }); 64 });
53 }); 65 });
54 }, 66 },
67 getMessage: function (url) {
68 return fetch(url).then(function (response) {
69 if (response.status != 200) {
70 return;
71 }
72 return response.json();
73 });
74 },
55 toggleTheme: function() { 75 toggleTheme: function() {
56 this.isDark = !this.isDark; 76 this.isDark = !this.isDark;
57 localStorage.overrideDark = this.isDark; 77 localStorage.overrideDark = this.isDark;