refactor(api): deprecated groups update socket in favour of API lib

v1.18.x
Julian Lam 4 years ago
parent e640a41a78
commit 1cd2689cf6

@ -6,8 +6,9 @@ define('admin/manage/group', [
'translator', 'translator',
'categorySelector', 'categorySelector',
'groupSearch', 'groupSearch',
'slugify',
'api', 'api',
], function (memberList, iconSelect, translator, categorySelector, groupSearch, api) { ], function (memberList, iconSelect, translator, categorySelector, groupSearch, slugify, api) {
var Groups = {}; var Groups = {};
Groups.init = function () { Groups.init = function () {
@ -68,27 +69,20 @@ define('admin/manage/group', [
}); });
$('#save').on('click', function () { $('#save').on('click', function () {
socket.emit('admin.groups.update', { api.put(`/groups/${slugify(groupName)}`, {
groupName: groupName, name: $('#change-group-name').val(),
values: { userTitle: changeGroupUserTitle.val(),
name: $('#change-group-name').val(), description: $('#change-group-desc').val(),
userTitle: changeGroupUserTitle.val(), icon: groupIcon.attr('value'),
description: $('#change-group-desc').val(), labelColor: changeGroupLabelColor.val(),
icon: groupIcon.attr('value'), textColor: changeGroupTextColor.val(),
labelColor: changeGroupLabelColor.val(), userTitleEnabled: $('#group-userTitleEnabled').is(':checked'),
textColor: changeGroupTextColor.val(), private: $('#group-private').is(':checked'),
userTitleEnabled: $('#group-userTitleEnabled').is(':checked'), hidden: $('#group-hidden').is(':checked'),
private: $('#group-private').is(':checked'), memberPostCids: $('#memberPostCids').val(),
hidden: $('#group-hidden').is(':checked'), disableJoinRequests: $('#group-disableJoinRequests').is(':checked'),
memberPostCids: $('#memberPostCids').val(), disableLeave: $('#group-disableLeave').is(':checked'),
disableJoinRequests: $('#group-disableJoinRequests').is(':checked'), }).then(() => {
disableLeave: $('#group-disableLeave').is(':checked'),
},
}, function (err) {
if (err) {
return app.alertError(err.message);
}
var newName = $('#change-group-name').val(); var newName = $('#change-group-name').val();
// If the group name changed, change url // If the group name changed, change url
@ -97,7 +91,7 @@ define('admin/manage/group', [
} }
app.alertSuccess('[[admin/manage/groups:edit.save-success]]'); app.alertSuccess('[[admin/manage/groups:edit.save-success]]');
}); }).catch(app.alertError);
return false; return false;
}); });
}; };

@ -203,14 +203,7 @@ define('forum/groups/details', [
} }
}); });
socket.emit('groups.update', { api.put(`/groups/${slugify(groupName)}`, settings).then(() => {
groupName: groupName,
values: settings,
}, function (err) {
if (err) {
return app.alertError(err.message);
}
if (settings.name) { if (settings.name) {
var pathname = window.location.pathname; var pathname = window.location.pathname;
pathname = pathname.substr(1, pathname.lastIndexOf('/')); pathname = pathname.substr(1, pathname.lastIndexOf('/'));
@ -220,7 +213,7 @@ define('forum/groups/details', [
} }
app.alertSuccess('[[groups:event.updated]]'); app.alertSuccess('[[groups:event.updated]]');
}); }).catch(app.alertError);
} }
}; };

@ -33,6 +33,16 @@ groupsAPI.create = async function (caller, data) {
return groupData; return groupData;
}; };
groupsAPI.update = async function (caller, data) {
const groupName = await groups.getGroupNameByGroupSlug(data.slug);
await isOwner(caller, groupName);
delete data.slug;
await groups.update(groupName, data);
return await groups.getGroupData(data.name || groupName);
};
groupsAPI.delete = async function (caller, data) { groupsAPI.delete = async function (caller, data) {
const groupName = await groups.getGroupNameByGroupSlug(data.slug); const groupName = await groups.getGroupNameByGroupSlug(data.slug);
await isOwner(caller, groupName); await isOwner(caller, groupName);

@ -15,6 +15,14 @@ Groups.create = async (req, res) => {
helpers.formatApiResponse(200, res, groupObj); helpers.formatApiResponse(200, res, groupObj);
}; };
Groups.update = async (req, res) => {
const groupObj = await api.groups.update(req, {
...req.body,
slug: req.params.slug,
});
helpers.formatApiResponse(200, res, groupObj);
};
Groups.delete = async (req, res) => { Groups.delete = async (req, res) => {
await api.groups.delete(req, req.params); await api.groups.delete(req, req.params);
helpers.formatApiResponse(200, res); helpers.formatApiResponse(200, res);

@ -24,6 +24,13 @@ module.exports = function (Groups) {
values: values, values: values,
})); }));
// Case some values as bool (if not boolean already)
['userTitleEnabled', 'private', 'hidden', 'disableJoinRequests', 'disableLeave'].forEach((prop) => {
if (values.hasOwnProperty(prop) && typeof values[prop] !== 'boolean') {
values[prop] = !!parseInt(values[prop], 10);
}
});
const payload = { const payload = {
description: values.description || '', description: values.description || '',
icon: values.icon || '', icon: values.icon || '',

@ -12,6 +12,7 @@ module.exports = function () {
setupApiRoute(router, 'post', '/', [...middlewares, middleware.checkRequired.bind(null, ['name'])], controllers.write.groups.create); setupApiRoute(router, 'post', '/', [...middlewares, middleware.checkRequired.bind(null, ['name'])], controllers.write.groups.create);
setupApiRoute(router, 'head', '/:slug', [middleware.assert.group], controllers.write.groups.exists); setupApiRoute(router, 'head', '/:slug', [middleware.assert.group], controllers.write.groups.exists);
setupApiRoute(router, 'put', '/:slug', [...middlewares, middleware.assert.group], controllers.write.groups.update);
setupApiRoute(router, 'delete', '/:slug', [...middlewares, middleware.assert.group], controllers.write.groups.delete); setupApiRoute(router, 'delete', '/:slug', [...middlewares, middleware.assert.group], controllers.write.groups.delete);
setupApiRoute(router, 'put', '/:slug/membership/:uid', [...middlewares, middleware.assert.group], controllers.write.groups.join); setupApiRoute(router, 'put', '/:slug/membership/:uid', [...middlewares, middleware.assert.group], controllers.write.groups.join);
setupApiRoute(router, 'delete', '/:slug/membership/:uid', [...middlewares, middleware.assert.group], controllers.write.groups.leave); setupApiRoute(router, 'delete', '/:slug/membership/:uid', [...middlewares, middleware.assert.group], controllers.write.groups.leave);

@ -43,9 +43,12 @@ Groups.leave = async function (socket, data) {
}; };
Groups.update = async function (socket, data) { Groups.update = async function (socket, data) {
sockets.warnDeprecated(socket, 'PUT /api/v3/groups/:slug');
if (!data) { if (!data) {
throw new Error('[[error:invalid-data]]'); throw new Error('[[error:invalid-data]]');
} }
await groups.update(data.groupName, data.values); const slug = await groups.getGroupField(data.groupName, 'slug');
await api.groups.update(socket, { slug, ...data.values });
// await groups.update(data.groupName, data.values);
}; };

@ -186,8 +186,12 @@ SocketGroups.rejectInvite = async (socket, data) => {
}; };
SocketGroups.update = async (socket, data) => { SocketGroups.update = async (socket, data) => {
sockets.warnDeprecated(socket, 'PUT /api/v3/groups/:slug');
await isOwner(socket, data); await isOwner(socket, data);
await groups.update(data.groupName, data.values);
const slug = await groups.getGroupField(data.groupName, 'slug');
await api.groups.update(socket, { slug, ...data.values });
// await groups.update(data.groupName, data.values);
}; };

Loading…
Cancel
Save