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
v1.18.x
Barış Soner Uşaklı 4 years ago
parent a784d10fff
commit 3673accdb8

@ -5,55 +5,71 @@ define('api', () => {
const baseUrl = config.relative_path + '/api/v3'; const baseUrl = config.relative_path + '/api/v3';
function call(options, callback) { 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({ $.ajax(Object.assign({
headers: { headers: {
'x-csrf-token': config.csrf_token, 'x-csrf-token': config.csrf_token,
}, },
}, options)) }, options))
.done((res) => { .done((res) => {
resolve(res.response); cb(null,
res.hasOwnProperty('status') && res.hasOwnProperty('response') ?
if (callback) { res.response : res
callback(undefined, res.response); );
}
}) })
.fail((ev) => { .fail((ev) => {
const error = new Error(ev.responseJSON.status.message); const errMessage = ev.responseJSON.status && ev.responseJSON.status.message ?
reject(error); ev.responseJSON.status.message :
ev.responseJSON.error;
if (!utils.hasLanguageKey(ev.responseJSON.status.message)) { const error = new Error(errMessage || ev.statusText);
app.alertError(ev.responseJSON.status.message);
}
if (callback) { if (!utils.hasLanguageKey(error.message)) {
callback(error); app.alertError(error.message);
} }
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({ api.get = (route, payload, onSuccess) => call({
url: baseUrl + route + '?' + $.param(payload), url: route + (Object.keys(payload).length ? ('?' + $.param(payload)) : ''),
}, onSuccess, onError); }, onSuccess);
api.post = (route, payload, onSuccess, onError) => call({ api.post = (route, payload, onSuccess) => call({
url: baseUrl + route, url: route,
method: 'post', method: 'post',
data: payload, data: payload,
}, onSuccess, onError); }, onSuccess);
api.put = (route, payload, onSuccess, onError) => call({ api.put = (route, payload, onSuccess) => call({
url: baseUrl + route, url: route,
method: 'put', method: 'put',
data: payload, data: payload,
}, onSuccess, onError); }, onSuccess);
api.del = (route, payload, onSuccess, onError) => call({ api.del = (route, payload, onSuccess) => call({
url: baseUrl + route, url: route,
method: 'delete', method: 'delete',
data: payload, data: payload,
}, onSuccess, onError); }, onSuccess);
return api; return api;
}); });

Loading…
Cancel
Save