Skip to content

Commit

Permalink
refactor: api module returns promise, error-first cb if cb passed in
Browse files Browse the repository at this point in the history
no more separate onSuccess onError callbacks

/cc @baris
  • Loading branch information
julianlam committed Oct 14, 2020
1 parent d52992d commit a784d10
Show file tree
Hide file tree
Showing 16 changed files with 103 additions and 133 deletions.
8 changes: 4 additions & 4 deletions public/src/admin/manage/admins-mods.js
Expand Up @@ -44,7 +44,7 @@ define('admin/manage/admins-mods', [
});

autocomplete.user($('#global-mod-search'), function (ev, ui) {
api.put('/groups/global-moderators/membership/' + ui.item.user.uid, undefined, () => {
api.put('/groups/global-moderators/membership/' + ui.item.user.uid, () => {
app.alertSuccess('[[admin/manage/users:alerts.make-global-mod-success]]');
$('#global-mod-search').val('');

Expand All @@ -56,7 +56,7 @@ define('admin/manage/admins-mods', [
$('.global-moderator-area').prepend(html);
$('#no-global-mods-warning').addClass('hidden');
});
}, 'default');
});
});

$('.global-moderator-area').on('click', '.remove-user-icon', function () {
Expand All @@ -65,13 +65,13 @@ define('admin/manage/admins-mods', [

bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-global-mod]]', function (confirm) {
if (confirm) {
api.del('/groups/global-moderators/membership/' + uid, undefined, () => {
api.del('/groups/global-moderators/membership/' + uid).then(() => {
app.alertSuccess('[[admin/manage/users:alerts.remove-global-mod-success]]');
userCard.remove();
if (!$('.global-moderator-area').children().length) {
$('#no-global-mods-warning').removeClass('hidden');
}
}, 'default');
});
}
});
});
Expand Down
16 changes: 4 additions & 12 deletions public/src/admin/manage/categories.js
Expand Up @@ -196,15 +196,9 @@ define('admin/manage/categories', [
};

Categories.toggle = function (cids, disabled) {
var requests = cids.map(function (cid) {
return api.put('/categories/' + cid, {
disabled: disabled ? 1 : 0,
});
});

$.when(requests).fail(function (ev) {
app.alertError(ev.responseJSON.status.message);
});
Promise.all(cids.map(cid => api.put('/categories/' + cid, {
disabled: disabled ? 1 : 0,
})));
};

function itemDidAdd(e) {
Expand Down Expand Up @@ -234,9 +228,7 @@ define('admin/manage/categories', [

newCategoryId = -1;

Object.keys(modified).forEach(function (cid) {
api.put('/categories/' + cid, modified[cid]);
});
Object.keys(modified).map(cid => api.put('/categories/' + cid, modified[cid]));
}
}

Expand Down
22 changes: 6 additions & 16 deletions public/src/admin/manage/category.js
Expand Up @@ -49,17 +49,15 @@ define('admin/manage/category', [
}

var cid = ajaxify.data.category.cid;
api.put('/categories/' + cid, updateHash, (res) => {
api.put('/categories/' + cid, updateHash).then((res) => {
app.flags._unsaved = false;
app.alert({
title: 'Updated Categories',
message: 'Category "' + res.name + '" was successfully updated.',
type: 'success',
timeout: 2000,
timeout: 5000,
});
updateHash = {};
}, (err) => {
app.alertError(err.status.message);
});

return false;
Expand Down Expand Up @@ -98,15 +96,13 @@ define('admin/manage/category', [
});
}, 1000);

api.del('/categories/' + ajaxify.data.category.cid, undefined, () => {
api.del('/categories/' + ajaxify.data.category.cid).then(() => {
if (intervalId) {
clearInterval(intervalId);
}
modal.modal('hide');
app.alertSuccess('[[admin/manage/categories:alert.purge-success]]');
ajaxify.go('admin/manage/categories');
}, (err) => {
app.alertError(err.status.message);
});

return false;
Expand Down Expand Up @@ -215,25 +211,21 @@ define('admin/manage/category', [
$('button[data-action="removeParent"]').on('click', function () {
api.put('/categories/' + ajaxify.data.category.cid, {
parentCid: 0,
}, () => {
}).then(() => {
$('button[data-action="removeParent"]').parent().addClass('hide');
$('button[data-action="changeParent"]').parent().addClass('hide');
$('button[data-action="setParent"]').removeClass('hide');
}, (err) => {
app.alertError(err.message);
});
});
$('button[data-action="toggle"]').on('click', function () {
var $this = $(this);
var disabled = $this.attr('data-disabled') === '1';
api.put('/categories/' + ajaxify.data.category.cid, {
disabled: disabled ? 0 : 1,
}, () => {
}).then(() => {
$this.translateText(!disabled ? '[[admin/manage/categories:enable]]' : '[[admin/manage/categories:disable]]');
$this.toggleClass('btn-primary', !disabled).toggleClass('btn-danger', disabled);
$this.attr('data-disabled', disabled ? 0 : 1);
}, (err) => {
app.alertError(err.message);
});
});
};
Expand Down Expand Up @@ -285,7 +277,7 @@ define('admin/manage/category', [
categorySelector.modal(categories, function (parentCid) {
api.put('/categories/' + ajaxify.data.category.cid, {
parentCid: parentCid,
}, () => {
}).then(() => {
var parent = allCategories.filter(function (category) {
return category && parseInt(category.cid, 10) === parseInt(parentCid, 10);
});
Expand All @@ -295,8 +287,6 @@ define('admin/manage/category', [
$('button[data-action="setParent"]').addClass('hide');
var buttonHtml = '<i class="fa ' + parent.icon + '"></i> ' + parent.name;
$('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide');
}, (err) => {
app.alertError(err.message);
});
});
});
Expand Down
4 changes: 2 additions & 2 deletions public/src/admin/manage/group.js
Expand Up @@ -128,9 +128,9 @@ define('admin/manage/group', [
if (!confirm) {
return;
}
api.del('/groups/' + ajaxify.data.group.slug + '/membership/' + uid, undefined, () => {
api.del('/groups/' + ajaxify.data.group.slug + '/membership/' + uid).then(() => {
userRow.slideUp().remove();
}, 'default');
});
});
break;
default:
Expand Down
2 changes: 1 addition & 1 deletion public/src/admin/manage/groups.js
Expand Up @@ -44,7 +44,7 @@ define('admin/manage/groups', [
ajaxify.go('admin/manage/groups/' + response.name);
});
createModal.modal('hide');
}, (err) => {
}).catch((err) => {
if (!utils.hasLanguageKey(err.status.message)) {
err.status.message = '[[admin/manage/groups:alerts.create-failure]]';
}
Expand Down
4 changes: 2 additions & 2 deletions public/src/admin/manage/uploads.js
Expand Up @@ -24,9 +24,9 @@ define('admin/manage/uploads', ['uploader', 'api'], function (uploader, api) {

api.del('/files', {
path: file.attr('data-path'),
}, () => {
}).then(() => {
file.remove();
}, 'default');
});
});
});
};
Expand Down
64 changes: 23 additions & 41 deletions public/src/admin/manage/users.js
Expand Up @@ -40,7 +40,7 @@ define('admin/manage/users', [
$('.users-table [component="user/select/single"]:checked').parents('.user-row').remove();
}

// use onSuccess/onFail instead
// use onSuccess instead
function done(successMessage, className, flag) {
return function (err) {
if (err) {
Expand All @@ -62,10 +62,6 @@ define('admin/manage/users', [
unselectAll();
}

function onFail(err) {
app.alertError(err.message);
}

$('[component="user/select/all"]').on('click', function () {
$('.users-table [component="user/select/single"]').prop('checked', $(this).is(':checked'));
});
Expand All @@ -89,12 +85,12 @@ define('admin/manage/users', [
modal.on('shown.bs.modal', function () {
autocomplete.group(modal.find('.group-search'), function (ev, ui) {
var uid = $(ev.target).attr('data-uid');
api.put('/groups/' + ui.item.group.slug + '/membership/' + uid, undefined, () => {
api.put('/groups/' + ui.item.group.slug + '/membership/' + uid, undefined).then(() => {
ui.item.group.nameEscaped = translator.escape(ui.item.group.displayName);
app.parseAndTranslate('admin/partials/manage_user_groups', { users: [{ groups: [ui.item.group] }] }, function (html) {
$('[data-uid=' + uid + '] .group-area').append(html.find('.group-area').html());
});
}, 'default');
});
});
});
modal.on('click', '.group-area a', function () {
Expand All @@ -104,9 +100,9 @@ define('admin/manage/users', [
var groupCard = $(this).parents('[data-group-name]');
var groupName = groupCard.attr('data-group-name');
var uid = $(this).parents('[data-uid]').attr('data-uid');
api.del('/groups/' + slugify(groupName) + '/membership/' + uid, undefined, () => {
api.del('/groups/' + slugify(groupName) + '/membership/' + uid).then(() => {
groupCard.remove();
}, 'default');
});
return false;
});
});
Expand All @@ -122,17 +118,11 @@ define('admin/manage/users', [

bootbox.confirm((uids.length > 1 ? '[[admin/manage/users:alerts.confirm-ban-multi]]' : '[[admin/manage/users:alerts.confirm-ban]]'), function (confirm) {
if (confirm) {
var requests = uids.map(function (uid) {
Promise.all(uids.map(function (uid) {
return api.put('/users/' + uid + '/ban');
})).then(() => {
onSuccess('[[admin/manage/users:alerts.ban-success]]', '.ban', true);
});

$.when(requests)
.done(function () {
onSuccess('[[admin/manage/users:alerts.ban-success]]', '.ban', true);
})
.fail(function (ev) {
onFail(ev.responseJSON.status);
});
}
});
});
Expand Down Expand Up @@ -164,19 +154,14 @@ define('admin/manage/users', [
}, {});
var until = formData.length > 0 ? (Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1))) : 0;

var requests = uids.map(function (uid) {
Promise.all(uids.map(function (uid) {
return api.put('/users/' + uid + '/ban', {
until: until,
reason: formData.reason,
});
})).then(() => {
onSuccess('[[admin/manage/users:alerts.ban-success]]', '.ban', true);
});

$.when(requests)
.done(function () {
onSuccess('[[admin/manage/users:alerts.ban-success]]', '.ban', true);
}).fail(function (ev) {
onFail(ev.responseJSON.status);
});
},
},
},
Expand All @@ -191,16 +176,11 @@ define('admin/manage/users', [
return false; // specifically to keep the menu open
}

var requests = uids.map(function (uid) {
Promise.all(uids.map(function (uid) {
return api.delete('/users/' + uid + '/ban');
})).then(() => {
onSuccess('[[admin/manage/users:alerts.unban-success]]', '.ban', false);
});

$.when(requests)
.done(function () {
onSuccess('[[admin/manage/users:alerts.unban-success]]', '.ban', false);
}).fail(function (ev) {
onFail(ev.responseJSON.status);
});
});

$('.reset-lockout').on('click', function () {
Expand Down Expand Up @@ -388,13 +368,15 @@ define('admin/manage/users', [
password: password,
};

api.post('/users', user, () => {
modal.modal('hide');
modal.on('hidden.bs.modal', function () {
ajaxify.refresh();
});
app.alertSuccess('[[admin/manage/users:alerts.create-success]]');
}, err => errorEl.translateHtml('[[admin/manage/users:alerts.error-x, ' + err.status.message + ']]').removeClass('hidden'));
api.post('/users', user)
.then(() => {
modal.modal('hide');
modal.on('hidden.bs.modal', function () {
ajaxify.refresh();
});
app.alertSuccess('[[admin/manage/users:alerts.create-success]]');
})
.catch(err => errorEl.translateHtml('[[admin/manage/users:alerts.error-x, ' + err.status.message + ']]').removeClass('hidden'));
}

handleSearch();
Expand Down
4 changes: 2 additions & 2 deletions public/src/client/account/edit.js
Expand Up @@ -47,15 +47,15 @@ define('forum/account/edit', [

$(window).trigger('action:profile.update', userData);

api.put('/users/' + userData.uid, userData, (res) => {
api.put('/users/' + userData.uid, userData).then((res) => {
app.alertSuccess('[[user:profile-update-success]]');

if (res.picture) {
$('#user-current-picture').attr('src', res.picture);
}

updateHeader(res.picture);
}, 'default');
});

return false;
}
Expand Down
4 changes: 2 additions & 2 deletions public/src/client/account/edit/email.js
Expand Up @@ -26,10 +26,10 @@ define('forum/account/edit/email', ['forum/account/header', 'api'], function (he
var btn = $(this);
btn.addClass('disabled').find('i').removeClass('hide');

api.put('/users/' + userData.uid, userData, (res) => {
api.put('/users/' + userData.uid, userData).then((res) => {
btn.removeClass('disabled').find('i').addClass('hide');
ajaxify.go('user/' + res.userslug + '/edit');
}, 'default');
});

return false;
});
Expand Down
34 changes: 18 additions & 16 deletions public/src/client/account/edit/password.js
Expand Up @@ -71,22 +71,24 @@ define('forum/account/edit/password', [
api.put('/users/' + ajaxify.data.theirid + '/password', {
currentPassword: currentPassword.val(),
newPassword: password.val(),
}, () => {
if (parseInt(app.user.uid, 10) === parseInt(ajaxify.data.uid, 10)) {
window.location.href = config.relative_path + '/login';
} else {
ajaxify.go('user/' + ajaxify.data.userslug + '/edit');
}
}, 'default').always(() => {
btn.removeClass('disabled').find('i').addClass('hide');
currentPassword.val('');
password.val('');
password_confirm.val('');
password_notify.parent().removeClass('show-success show-danger');
password_confirm_notify.parent().removeClass('show-success show-danger');
passwordsmatch = false;
passwordvalid = false;
});
})
.then(() => {
if (parseInt(app.user.uid, 10) === parseInt(ajaxify.data.uid, 10)) {
window.location.href = config.relative_path + '/login';
} else {
ajaxify.go('user/' + ajaxify.data.userslug + '/edit');
}
})
.finally(() => {
btn.removeClass('disabled').find('i').addClass('hide');
currentPassword.val('');
password.val('');
password_confirm.val('');
password_notify.parent().removeClass('show-success show-danger');
password_confirm_notify.parent().removeClass('show-success show-danger');
passwordsmatch = false;
passwordvalid = false;
});
} else {
if (!passwordsmatch) {
app.alertError('[[user:change_password_error_match]]');
Expand Down

1 comment on commit a784d10

@barisusakli
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onError left on get/post/put/del functions

I think promise should only be returned if callback is undefined

Calling a 404 route causes a crash, ie api.get('/foo', {}, function (err, data){});

image

Please sign in to comment.