From 479a3edb44bffdcc48b12ac62428320b45c6d6ed Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 22 Sep 2022 17:18:36 +0200 Subject: [PATCH] Gracefully handle startup errors (#4383) --- assets/css/app.css | 7 + assets/js/api.js | 8 +- assets/js/app.js | 7 - assets/js/components/Site.vue | 4 - assets/js/components/StartupError.vue | 142 ++++++++++ assets/js/i18n/de.js | 13 + assets/js/i18n/en.js | 13 + assets/js/views/Main.vue | 101 +------ cmd/charger.go | 10 +- cmd/charger_ramp.go | 10 +- cmd/config.go | 21 +- cmd/dump.go | 23 +- cmd/meter.go | 10 +- cmd/root.go | 251 ++++++++++++------ cmd/root_test.go | 39 +++ cmd/setup.go | 74 ++++-- cmd/token.go | 2 +- cmd/vehicle.go | 10 +- core/config.go | 6 +- core/loadpoint.go | 15 +- core/site.go | 25 +- ...{index.9f475f7d.css => index.682a2576.css} | 2 +- dist/assets/index.69a8c963.js | 79 ++++++ dist/assets/index.fd078ce0.js | 97 ------- dist/index.html | 4 +- server/http.go | 125 +++++---- server/http_handler.go | 9 +- 27 files changed, 692 insertions(+), 415 deletions(-) create mode 100644 assets/js/components/StartupError.vue create mode 100644 cmd/root_test.go rename dist/assets/{index.9f475f7d.css => index.682a2576.css} (93%) create mode 100644 dist/assets/index.69a8c963.js delete mode 100644 dist/assets/index.fd078ce0.js diff --git a/assets/css/app.css b/assets/css/app.css index c1d2508f4..27ac7a4f1 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -145,6 +145,13 @@ a:hover { background-color: var(--evcc-accent3); border-color: var(--evcc-accent3); } + +.btn:disabled { + color: inherit !important; + background-color: inherit !important; + border-color: inherit !important; +} + .btn-outline-primary, .btn-outline-primary:focus { color: var(--bs-primary); diff --git a/assets/js/api.js b/assets/js/api.js index 5a97ffba9..295d44979 100644 --- a/assets/js/api.js +++ b/assets/js/api.js @@ -13,11 +13,9 @@ const api = axios.create({ api.interceptors.response.use( (response) => response, (error) => { - if (error.config.url !== "health") { - const url = error.config.baseURL + error.config.url; - const message = `${error.message}: API request failed ${url}`; - window.app.error({ message }); - } + const url = error.config.baseURL + error.config.url; + const message = `${error.message}: API request failed ${url}`; + window.app.error({ message }); return Promise.reject(error); } ); diff --git a/assets/js/app.js b/assets/js/app.js index d252a12e5..bfceb25d2 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -4,7 +4,6 @@ import smoothscroll from "smoothscroll-polyfill"; import "../css/app.css"; import { createApp, h } from "vue"; import { createMetaManager, plugin as metaPlugin } from "vue-meta"; -import api from "./api"; import App from "./views/App.vue"; import VueNumber from "vue-number-animation"; import router from "./router"; @@ -73,10 +72,4 @@ app.use(featureflags); app.use(VueNumber); window.app = app.mount("#app"); -window.setInterval(function () { - if (!document.hidden) { - api.get("health").then(window.app.setOnline).catch(window.app.setOffline); - } -}, 5000); - watchThemeChanges(); diff --git a/assets/js/components/Site.vue b/assets/js/components/Site.vue index 9e5685086..dfe2ebfdc 100644 --- a/assets/js/components/Site.vue +++ b/assets/js/components/Site.vue @@ -1,7 +1,5 @@