feat: DELETE /api/v3/chats/:roomId/users and DELETE /api/v3/chats/:roomId/users/:uid

This commit is contained in:
Julian Lam
2021-12-22 09:58:52 -05:00
parent 6294beea0b
commit fe17c94c35
9 changed files with 121 additions and 19 deletions

View File

@@ -101,3 +101,15 @@ chatsAPI.invite = async (caller, data) => {
delete data.uids;
return chatsAPI.users(caller, data);
};
chatsAPI.kick = async (caller, data) => {
const uidsExist = await user.exists(data.uids);
if (!uidsExist.every(Boolean)) {
throw new Error('[[error:no-user]]');
}
await messaging.removeUsersFromRoom(caller.uid, data.uids, data.roomId);
delete data.uids;
return chatsAPI.users(caller, data);
};

View File

@@ -70,7 +70,22 @@ Chats.invite = async (req, res) => {
};
Chats.kick = async (req, res) => {
// ...
const users = await api.chats.kick(req, {
...req.body,
roomId: req.params.roomId,
});
helpers.formatApiResponse(200, res, users);
};
Chats.kickUser = async (req, res) => {
req.body.uids = [req.params.uid];
const users = await api.chats.kick(req, {
...req.body,
roomId: req.params.roomId,
});
helpers.formatApiResponse(200, res, users);
};
Chats.messages = {};

View File

@@ -21,7 +21,8 @@ module.exports = function () {
setupApiRoute(router, 'get', '/:roomId/users', [...middlewares, middleware.assert.room], controllers.write.chats.users);
setupApiRoute(router, 'post', '/:roomId/users', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.invite);
// setupApiRoute(router, 'delete', '/:roomId/users', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.kick);
setupApiRoute(router, 'delete', '/:roomId/users', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.kick);
setupApiRoute(router, 'delete', '/:roomId/users/:uid', [...middlewares, middleware.assert.room, middleware.assert.user], controllers.write.chats.kickUser);
setupApiRoute(router, 'get', '/:roomId/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.get);
setupApiRoute(router, 'put', '/:roomId/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.edit);

View File

@@ -117,15 +117,17 @@ SocketModules.chats.addUserToRoom = async function (socket, data) {
};
SocketModules.chats.removeUserFromRoom = async function (socket, data) {
sockets.warnDeprecated(socket, 'DELETE /api/v3/chats/:roomId/users OR DELETE /api/v3/chats/:roomId/users/:uid');
if (!data || !data.roomId) {
throw new Error('[[error:invalid-data]]');
}
const exists = await user.exists(data.uid);
if (!exists) {
throw new Error('[[error:no-user]]');
}
await Messaging.removeUsersFromRoom(socket.uid, [data.uid], data.roomId);
// Revised API can accept multiple uids now
data.uids = [data.uid];
delete data.uid;
await api.chats.kick(socket, data);
};
SocketModules.chats.leave = async function (socket, roomid) {