From e566a89860c6fad02246feacad21400527535291 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Fri, 6 Nov 2020 10:52:51 +0100 Subject: [PATCH] Add warning if backend is offline (implements #416) --- src/boot/axios.ts | 10 +++-- src/components/loading/BackendOffline.vue | 46 +++++++++++++++++++++ src/components/navigation/EssentialLink.vue | 2 - src/components/navigation/ShortCutLink.vue | 2 - src/layouts/MainLayout.vue | 5 ++- src/layouts/OutLayout.vue | 12 ++---- src/plugins/user/store/session.ts | 7 +++- 7 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 src/components/loading/BackendOffline.vue diff --git a/src/boot/axios.ts b/src/boot/axios.ts index 4de466e..0ee01ac 100644 --- a/src/boot/axios.ts +++ b/src/boot/axios.ts @@ -27,14 +27,18 @@ export default boot>(({ Vue, store }) => { }); /*** - * Intercept responses, filter 401 and logout + * Intercept responses + * - filter 401 --> logout + * - filter timeout or 502 --> backendOffline */ axios.interceptors.response.use( response => response, error => { - if (error && 'response' in error) { + if (error) { const e = error; - if (e.response && e.response.status == 401) { + if (e.code === 'ECONNABORTED' || e.response && e.response.status === 502) { + store.commit('session/setOffline', true); + } else if (e.response && e.response.status == 401) { return store.dispatch('session/clearup'); } } diff --git a/src/components/loading/BackendOffline.vue b/src/components/loading/BackendOffline.vue new file mode 100644 index 0000000..8870022 --- /dev/null +++ b/src/components/loading/BackendOffline.vue @@ -0,0 +1,46 @@ + + + diff --git a/src/components/navigation/EssentialLink.vue b/src/components/navigation/EssentialLink.vue index b22f15f..205d384 100644 --- a/src/components/navigation/EssentialLink.vue +++ b/src/components/navigation/EssentialLink.vue @@ -15,8 +15,6 @@ diff --git a/src/plugins/user/store/session.ts b/src/plugins/user/store/session.ts index b2cb1e7..2fabc6d 100644 --- a/src/plugins/user/store/session.ts +++ b/src/plugins/user/store/session.ts @@ -10,6 +10,7 @@ export interface SessionInterface { currentSession?: FG.Session; sessions: FG.Session[]; loading: boolean; + backendOffline: boolean; } function loadFromLocal() { @@ -21,7 +22,8 @@ function loadFromLocal() { const state: SessionInterface = { sessions: [], currentSession: loadFromLocal() || undefined, - loading: false + loading: false, + backendOffline: false }; const mutations: MutationTree = { @@ -38,6 +40,9 @@ const mutations: MutationTree = { }, setLoading(state, value: boolean) { state.loading = value; + }, + setOffline(state, value: boolean) { + state.backendOffline = value; } };