Procházet zdrojové kódy

Merge pull request #28098 from overleaf/em-dsmp-chat-event

Send a DSMP event when a chat message is sent

GitOrigin-RevId: 062476676c91a4edf3d6f837d60ad16c7f912771
Eric Mc Sween před 1 rokem
rodič
revize
fa9cea9f1d

+ 8 - 0
services/web/app/src/Features/Chat/ChatController.js

@@ -1,4 +1,5 @@
 const { expressify } = require('@overleaf/promise-utils')
+const Modules = require('../../infrastructure/Modules')
 const ChatApiHandler = require('./ChatApiHandler')
 const EditorRealTimeController = require('../Editor/EditorRealTimeController')
 const SessionManager = require('../Authentication/SessionManager')
@@ -24,6 +25,13 @@ async function sendMessage(req, res) {
   message.user = UserInfoController.formatPersonalInfo(user)
   message.clientId = clientId
   EditorRealTimeController.emitToRoom(projectId, 'new-chat-message', message)
+
+  await Modules.promises.hooks.fire('chatMessageSent', {
+    projectId,
+    userId,
+    messageId: message.id,
+  })
+
   res.sendStatus(204)
 }
 

+ 8 - 0
services/web/test/unit/src/Chat/ChatControllerTests.js

@@ -21,6 +21,13 @@ describe('ChatController', function () {
       promises: {},
     }
     this.UserInfoController = {}
+    this.Modules = {
+      promises: {
+        hooks: {
+          fire: sinon.stub().resolves(),
+        },
+      },
+    }
     this.ChatController = SandboxedModule.require(MODULE_PATH, {
       requires: {
         '@overleaf/settings': this.settings,
@@ -30,6 +37,7 @@ describe('ChatController', function () {
         '../Authentication/SessionManager': this.SessionManager,
         '../User/UserInfoManager': this.UserInfoManager,
         '../User/UserInfoController': this.UserInfoController,
+        '../../infrastructure/Modules': this.Modules,
       },
     })
     this.req = {