diff --git a/app/src/helpers/api.js b/app/src/helpers/api.js index f17aebaa..09e00b3d 100644 --- a/app/src/helpers/api.js +++ b/app/src/helpers/api.js @@ -6,8 +6,15 @@ function objectToParams (object) { return urlParams } -function handleResponse (response, type = 'json') { - return response.ok ? response[type]() : handleErrors(response) +async function handleResponse (response) { + if (!response.ok) return handleErrors(response) + // FIXME the api should always return json objects + const responseText = await response.text() + try { + return JSON.parse(responseText) + } catch { + return responseText + } } async function handleErrors (response) { @@ -35,11 +42,9 @@ export default { }, get (uri) { - return fetch('/api/' + uri, this.options) - .then(response => handleResponse(response)) - .catch(err => { - console.log(err) - }) + return fetch( + '/api/' + uri, this.options + ).then(handleResponse) }, getAll (uris) { @@ -51,7 +56,7 @@ export default { ...this.options, method: 'POST', body: objectToParams(data) - }).then(response => handleResponse(response)) + }).then(handleResponse) }, put (uri, data = {}) { @@ -59,7 +64,7 @@ export default { ...this.options, method: 'PUT', body: objectToParams(data) - }).then(response => handleResponse(response)) + }).then(handleResponse) }, delete (uri, data = {}) { @@ -68,21 +73,5 @@ export default { method: 'DELETE', body: objectToParams(data) }).then(response => response.ok ? 'ok' : handleErrors(response)) - }, - - login (password) { - return fetch('/api/login', { - ...this.options, - method: 'POST', - body: objectToParams({ password }) - }).then(response => (response.ok)) - }, - - logout () { - return fetch('/api/logout', this.options).then(response => (response.ok)) - }, - - getVersion () { - return fetch('/api/versions', this.options).then(response => handleResponse(response)) } }