diff --git a/public/openapi/write.yaml b/public/openapi/write.yaml index 3f90040ffe..25cd96fef7 100644 --- a/public/openapi/write.yaml +++ b/public/openapi/write.yaml @@ -144,8 +144,8 @@ paths: $ref: 'write/chats/roomId/users.yaml' /chats/{roomId}/users/{uid}: $ref: 'write/chats/roomId/users/uid.yaml' - /chats/{roomId}/{mid}: - $ref: 'write/chats/roomId/mid.yaml' + /chats/{roomId}/messages/{mid}: + $ref: 'write/chats/roomId/messages/mid.yaml' /flags/: $ref: 'write/flags.yaml' /flags/{flagId}: diff --git a/public/openapi/write/chats/roomId/mid.yaml b/public/openapi/write/chats/roomId/messages/mid.yaml similarity index 85% rename from public/openapi/write/chats/roomId/mid.yaml rename to public/openapi/write/chats/roomId/messages/mid.yaml index 769d650c48..5053f1546d 100644 --- a/public/openapi/write/chats/roomId/mid.yaml +++ b/public/openapi/write/chats/roomId/messages/mid.yaml @@ -27,9 +27,9 @@ get: type: object properties: status: - $ref: ../../../components/schemas/Status.yaml#/Status + $ref: ../../../../components/schemas/Status.yaml#/Status response: - $ref: ../../../components/schemas/Chats.yaml#/MessageObject + $ref: ../../../../components/schemas/Chats.yaml#/MessageObject put: tags: - chats @@ -70,9 +70,9 @@ put: type: object properties: status: - $ref: ../../../components/schemas/Status.yaml#/Status + $ref: ../../../../components/schemas/Status.yaml#/Status response: - $ref: ../../../components/schemas/Chats.yaml#/MessageObject + $ref: ../../../../components/schemas/Chats.yaml#/MessageObject delete: tags: - chats @@ -102,7 +102,7 @@ delete: type: object properties: status: - $ref: ../../../components/schemas/Status.yaml#/Status + $ref: ../../../../components/schemas/Status.yaml#/Status response: type: object properties: {} @@ -135,7 +135,7 @@ post: type: object properties: status: - $ref: ../../../components/schemas/Status.yaml#/Status + $ref: ../../../../components/schemas/Status.yaml#/Status response: type: object properties: {} \ No newline at end of file diff --git a/public/src/client/chats/messages.js b/public/src/client/chats/messages.js index 191805b18c..92cae2dc75 100644 --- a/public/src/client/chats/messages.js +++ b/public/src/client/chats/messages.js @@ -37,7 +37,7 @@ define('forum/chats/messages', [ }); }); } else { - api.put(`/chats/${roomId}/${mid}`, { message }).catch((err) => { + api.put(`/chats/${roomId}/messages/${mid}`, { message }).catch((err) => { inputEl.val(message); inputEl.attr('data-mid', mid); messages.updateRemainingLength(inputEl.parent()); @@ -190,7 +190,7 @@ define('forum/chats/messages', [ return; } - api.delete(`/chats/${roomId}/${messageId}`, {}).then(() => { + api.delete(`/chats/${roomId}/messages/${messageId}`, {}).then(() => { components.get('chat/message', messageId).toggleClass('deleted', true); }).catch(alerts.error); }); @@ -198,7 +198,7 @@ define('forum/chats/messages', [ }; messages.restore = function (messageId, roomId) { - api.post(`/chats/${roomId}/${messageId}`, {}).then(() => { + api.post(`/chats/${roomId}/messages/${messageId}`, {}).then(() => { components.get('chat/message', messageId).toggleClass('deleted', false); }).catch(alerts.error); }; diff --git a/src/routes/write/chats.js b/src/routes/write/chats.js index a211270c71..7f9fd9eaee 100644 --- a/src/routes/write/chats.js +++ b/src/routes/write/chats.js @@ -24,10 +24,10 @@ module.exports = function () { 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); - setupApiRoute(router, 'post', '/:roomId/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.restore); - setupApiRoute(router, 'delete', '/:roomId/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.delete); + setupApiRoute(router, 'get', '/:roomId/messages/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.get); + setupApiRoute(router, 'put', '/:roomId/messages/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.edit); + setupApiRoute(router, 'post', '/:roomId/messages/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.restore); + setupApiRoute(router, 'delete', '/:roomId/messages/:mid', [...middlewares, middleware.assert.room, middleware.assert.message], controllers.write.chats.messages.delete); return router; }; diff --git a/test/messaging.js b/test/messaging.js index bc4fb2372e..9647f7abb6 100644 --- a/test/messaging.js +++ b/test/messaging.js @@ -158,7 +158,7 @@ describe('Messaging Library', () => { assert.strictEqual(messages[0].system, true); assert.strictEqual(messages[0].content, 'user-join'); - const { statusCode, body: body2 } = await callv3API('put', `/chats/${roomId}/${messages[0].messageId}`, { + const { statusCode, body: body2 } = await callv3API('put', `/chats/${roomId}/messages/${messages[0].messageId}`, { message: 'test', }, 'foo'); assert.strictEqual(statusCode, 400); @@ -607,33 +607,33 @@ describe('Messaging Library', () => { }); it('should fail to edit message with invalid data', async () => { - let { statusCode, body } = await callv3API('put', `/chats/1/10000`, { message: 'foo' }, 'foo'); + let { statusCode, body } = await callv3API('put', `/chats/1/messages/10000`, { message: 'foo' }, 'foo'); assert.strictEqual(statusCode, 400); assert.strictEqual(body.status.message, await translator.translate('[[error:invalid-mid]]')); - ({ statusCode, body } = await callv3API('put', `/chats/${roomId}/${mid}`, {}, 'foo')); + ({ statusCode, body } = await callv3API('put', `/chats/${roomId}/messages/${mid}`, {}, 'foo')); assert.strictEqual(statusCode, 400); assert.strictEqual(body.status.message, await translator.translate('[[error:invalid-chat-message]]')); }); it('should fail to edit message if new content is empty string', async () => { - const { statusCode, body } = await callv3API('put', `/chats/${roomId}/${mid}`, { message: ' ' }, 'foo'); + const { statusCode, body } = await callv3API('put', `/chats/${roomId}/messages/${mid}`, { message: ' ' }, 'foo'); assert.strictEqual(statusCode, 400); assert.strictEqual(body.status.message, await translator.translate('[[error:invalid-chat-message]]')); }); it('should fail to edit message if not own message', async () => { - const { statusCode, body } = await callv3API('put', `/chats/${roomId}/${mid}`, { message: 'message edited' }, 'herp'); + const { statusCode, body } = await callv3API('put', `/chats/${roomId}/messages/${mid}`, { message: 'message edited' }, 'herp'); assert.strictEqual(statusCode, 400); assert.strictEqual(body.status.message, await translator.translate('[[error:cant-edit-chat-message]]')); }); it('should edit message', async () => { - let { statusCode, body } = await callv3API('put', `/chats/${roomId}/${mid}`, { message: 'message edited' }, 'foo'); + let { statusCode, body } = await callv3API('put', `/chats/${roomId}/messages/${mid}`, { message: 'message edited' }, 'foo'); assert.strictEqual(statusCode, 200); assert.strictEqual(body.response.content, 'message edited'); - ({ statusCode, body } = await callv3API('get', `/chats/${roomId}/${mid}`, {}, 'foo')); + ({ statusCode, body } = await callv3API('get', `/chats/${roomId}/messages/${mid}`, {}, 'foo')); assert.strictEqual(statusCode, 200); assert.strictEqual(body.response.content, 'message edited'); });