diff --git a/.gitignore b/.gitignore index 17b7c1607..43c4eff00 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ __debug_bin* !package*.json !evcc.dist.yaml !tests/**/*.evcc.yaml +!tests/**/*.tpl.yaml !tsconfig.json /templates/docs evcc diff --git a/assets/js/api.ts b/assets/js/api.ts index 9b3753821..86fc9ddb4 100644 --- a/assets/js/api.ts +++ b/assets/js/api.ts @@ -19,6 +19,7 @@ function customParamsSerializer(params: { [key: string]: any }) { .join("&"); } +// general api client const api = axios.create({ baseURL: base + "api/", headers: { @@ -27,32 +28,35 @@ const api = axios.create({ paramsSerializer: customParamsSerializer, }); -// global error handling -api.interceptors.response.use( - (response) => response, - (error) => { - // handle unauthorized errors - if (error.response?.status === 401) { - openLoginModal(); - return Promise.reject(error); - } - - const message = [`${error.message}.`]; - if (error.response?.data?.error) { - message.push(`${error.response.data.error}.`); - } - if (error.config) { - const method = error.config.method.toUpperCase(); - const url = error.request.responseURL; - message.push(`${method} ${url}`); - } - window.app.raise({ message }); +const errorInterceptor = (error: any) => { + // handle unauthorized errors + if (error.response?.status === 401) { + openLoginModal(); return Promise.reject(error); } -); + + const message = [`${error.message}.`]; + if (error.response?.data?.error) { + message.push(`${error.response.data.error}.`); + } + if (error.config) { + const method = error.config.method.toUpperCase(); + const url = error.request.responseURL; + message.push(`${method} ${url}`); + } + window.app.raise({ message }); + return Promise.reject(error); +}; +api.interceptors.response.use((response) => response, errorInterceptor); export default api; +// api client for calling non `/api` prefixed routes (e.g. auth provider) +export const baseApi = axios.create({ + baseURL: base, +}); +baseApi.interceptors.response.use((response) => response, errorInterceptor); + export const i18n = axios.create({ baseURL: base + "i18n/", headers: { diff --git a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue index f2050945e..2f216e07d 100644 --- a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue +++ b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue @@ -8,6 +8,7 @@ :size="modalSize" @open="handleOpen" @close="handleClose" + @visibilitychange="handleVisibilityChange" >