From 1b1b5cda5b1f12b59ddfeb1ce6ce25ffaf56eb89 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 Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi --- .../prog/js/vue/fetch/http-client.js | 36 +++++++++---------- 1 file changed, 17 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 8d880d258e..875ae2badc 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,24 @@ 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("\n") || + json; + console.log("Server returned an error:"); + console.log(response); + throw new Error(message); + }); } - ) + return return_response ? response : response.json(); + }) + .then(result => { + res = result; + }) .catch(err => { error = err; setError(err); @@ -144,16 +152,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.39.5