From bd9109425a40f5b6c43147a7c9852014a5797dca Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Sat, 6 Jun 2020 16:57:36 -0700 Subject: Display parsing error --- src/App.vue | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/App.vue b/src/App.vue index 8185da2..fddc585 100644 --- a/src/App.vue +++ b/src/App.vue @@ -146,27 +146,26 @@ export default { }; }, created: async function () { - try { - const defaults = jsyaml.load(defaultConfig); - let config = await this.getConfig(); - - this.config = merge(defaults, config); - this.services = this.config.services; - document.title = `${this.config.title} | ${this.config.subtitle}`; - } catch (error) { - this.offline = true; - } + const defaults = jsyaml.load(defaultConfig); + let config = await this.getConfig(); + this.config = merge(defaults, config); + this.services = this.config.services; + document.title = `${this.config.title} | ${this.config.subtitle}`; }, methods: { getConfig: function () { - return fetch("config.yml").then(function (response) { - if (response.status != 200) { - return; - } - return response.text().then(function (body) { - return jsyaml.load(body); + return fetch("config.yml") + .then((response) => { + if (!response.ok) { + throw Error(response.statusText); + } + return response.text().then((body) => { + return jsyaml.load(body); + }); + }) + .catch((error) => { + return this.handleErrors("⚠️ Error loading configuration", error); }); - }); }, matchesFilter: function (item) { return ( @@ -207,6 +206,15 @@ export default { }, ]; }, + handleErrors: function (title, content) { + return { + message: { + title: title, + style: "is-danger", + content: content, + }, + }; + }, }, }; -- cgit v1.2.3