mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
refactor(api): deprecated groups update socket in favour of API lib
This commit is contained in:
@@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user