From 3673accdb8485199ecf9b047b69ad3ff2924cf89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 14 Oct 2020 11:05:50 -0400 Subject: [PATCH] refactor: api module only return promise if callback is undefined dont append baseUrl if url already starts with api correctly handle writeapi readapi response for data/error remove unused onError dont append empty ? to url for get routes --- public/src/modules/api.js | 66 ++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/public/src/modules/api.js b/public/src/modules/api.js index 2776b8ee74..33cf5d8d8f 100644 --- a/public/src/modules/api.js +++ b/public/src/modules/api.js @@ -5,55 +5,71 @@ define('api', () => { const baseUrl = config.relative_path + '/api/v3'; function call(options, callback) { - return new Promise((resolve, reject) => { + options.url = options.url.startsWith('/api') ? + config.relative_path + options.url : + baseUrl + options.url; + + function doAjax(cb) { $.ajax(Object.assign({ headers: { 'x-csrf-token': config.csrf_token, }, }, options)) .done((res) => { - resolve(res.response); - - if (callback) { - callback(undefined, res.response); - } + cb(null, + res.hasOwnProperty('status') && res.hasOwnProperty('response') ? + res.response : res + ); }) .fail((ev) => { - const error = new Error(ev.responseJSON.status.message); - reject(error); + const errMessage = ev.responseJSON.status && ev.responseJSON.status.message ? + ev.responseJSON.status.message : + ev.responseJSON.error; - if (!utils.hasLanguageKey(ev.responseJSON.status.message)) { - app.alertError(ev.responseJSON.status.message); + const error = new Error(errMessage || ev.statusText); + + if (!utils.hasLanguageKey(error.message)) { + app.alertError(error.message); } - if (callback) { - callback(error); - } + cb(error); }); + } + + if (typeof callback === 'function') { + doAjax(callback); + return; + } + + return new Promise((resolve, reject) => { + doAjax(function (err, data) { + if (err) reject(err); + else resolve(data); + }); }); } - api.get = (route, payload, onSuccess, onError) => call({ - url: baseUrl + route + '?' + $.param(payload), - }, onSuccess, onError); + api.get = (route, payload, onSuccess) => call({ + url: route + (Object.keys(payload).length ? ('?' + $.param(payload)) : ''), + }, onSuccess); - api.post = (route, payload, onSuccess, onError) => call({ - url: baseUrl + route, + api.post = (route, payload, onSuccess) => call({ + url: route, method: 'post', data: payload, - }, onSuccess, onError); + }, onSuccess); - api.put = (route, payload, onSuccess, onError) => call({ - url: baseUrl + route, + api.put = (route, payload, onSuccess) => call({ + url: route, method: 'put', data: payload, - }, onSuccess, onError); + }, onSuccess); - api.del = (route, payload, onSuccess, onError) => call({ - url: baseUrl + route, + api.del = (route, payload, onSuccess) => call({ + url: route, method: 'delete', data: payload, - }, onSuccess, onError); + }, onSuccess); return api; });