From a50d10f9ea4b90f6a7a37cb0efd578805db03ac3 Mon Sep 17 00:00:00 2001 From: Pedro Amorim Date: Mon, 31 Jul 2023 14:57:06 +0000 Subject: [PATCH] Bug 34448: Update the way we handle response in http-client.js Test plan: Before patch: - Visit a non-existent ID i.e. /cgi-bin/koha/erm/agreements/999 - Visit a char ID i.e. /cgi-bin/koha/erm/agreements/abc Apply patch: Repeat above steps. Run cypress tests --- .../prog/js/vue/fetch/http-client.js | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/http-client.js b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/http-client.js index 936231c3f6..481eba897c 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/http-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/http-client.js @@ -21,16 +21,22 @@ class HttpClient { ...options, headers: { ...this._headers, ...headers }, }) - .then(response => this.checkError(response, return_response)) - .then( - result => { - res = result; - }, - err => { - error = err; - setError(err.toString()); + .then(response => { + if (!response.ok) { + return response.text().then(text => { + let json = JSON.parse(text); + let message = + json.error || + json.errors.map(e => e.message).join(" ") || + json; + throw new Error(`${message}`); + }); } - ) + return return_response ? response : response.json(); + }) + .then(result => { + res = result; + }) .catch(err => { error = err; setError(err); @@ -143,16 +149,6 @@ class HttpClient { method: "PATCH", }); } - - checkError(response, return_response = 0) { - if (response.status >= 200 && response.status <= 299) { - return return_response ? response : response.json(); - } else { - console.log("Server returned an error:"); - console.log(response); - throw Error("%s (%s)".format(response.statusText, response.status)); - } - } } export default HttpClient; -- 2.30.2