aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBastien Wirtz <bastien.wirtz@gmail.com>2019-12-27 10:40:03 -0800
committerGitHub <noreply@github.com>2019-12-27 10:40:03 -0800
commit2e7bedd13e0ce409e5bfa45095a9154463257870 (patch)
tree8bb5434679911ad2302fedbea14d3853cd6b169b
parent5738264ea00221c0ca128d5e7f74d31a8ec0490c (diff)
parentdb409f74e016b35421c2aaa2a5ade1e42553664e (diff)
downloadhomer-2e7bedd13e0ce409e5bfa45095a9154463257870.tar.gz
homer-2e7bedd13e0ce409e5bfa45095a9154463257870.tar.zst
homer-2e7bedd13e0ce409e5bfa45095a9154463257870.zip
Merge pull request #7 from bastienwirtz/dynamic-message
Optionaly load message from an endpoint.
-rw-r--r--README.md14
-rw-r--r--app.js32
-rw-r--r--config.yml1
3 files changed, 41 insertions, 6 deletions
diff --git a/README.md b/README.md
index 62bbd77..f149549 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,7 @@ logo: "assets/homer.png"
27 27
28# Optional message 28# Optional message
29message: 29message:
30 # url: "https://<my-api-endpoint>" # Can fetch information from an endpoint to override value below.
30 style: "is-warning" 31 style: "is-warning"
31 title: "Optional message!" 32 title: "Optional message!"
32 content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. Aenean ac eleifend lacus, in mollis lectus. Donec sodales, arcu et sollicitudin porttitor, tortor urna tempor ligula." 33 content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. Aenean ac eleifend lacus, in mollis lectus. Donec sodales, arcu et sollicitudin porttitor, tortor urna tempor ligula."
@@ -85,3 +86,16 @@ services:
85 url: "#" 86 url: "#"
86 87
87``` 88```
89
90If you choose to fetch message information from an endpoint, the output format should be:
91
92```json
93{
94 "style": null,
95 "title": "Lorem ipsum 42",
96 "content": "LA LA LA Lorem ipsum dolor sit amet, ....."
97}
98```
99
100`null` value or missing keys will be ignored and value from the `config.yml` will be used if available.
101Empty values (either in `config.yml` or the endpoint data) will hide the element (ex: set `"title": ""` to hide the title bar)
diff --git a/app.js b/app.js
index 40830da..6c2ba90 100644
--- a/app.js
+++ b/app.js
@@ -7,7 +7,7 @@ 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 ?
@@ -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;
diff --git a/config.yml b/config.yml
index 2adddb1..7288da6 100644
--- a/config.yml
+++ b/config.yml
@@ -10,6 +10,7 @@ icon: "fas fa-skull-crossbones"
10# Optional message 10# Optional message
11# See https://bulma.io/documentation/components/message/#colors for styling options. 11# See https://bulma.io/documentation/components/message/#colors for styling options.
12message: 12message:
13 # url: https://....
13 style: "is-warning" 14 style: "is-warning"
14 title: "Optional message!" 15 title: "Optional message!"
15 content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. Aenean ac eleifend lacus, in mollis lectus. Donec sodales, arcu et sollicitudin porttitor, tortor urna tempor ligula." 16 content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. Aenean ac eleifend lacus, in mollis lectus. Donec sodales, arcu et sollicitudin porttitor, tortor urna tempor ligula."