Просмотр исходного кода

feat: code improvement

https://youtrack.weseek.co.jp/issue/GW-7697
- Add function to find all users by slack Ids
- Implement function in messages conversion
- Update message user conversion
I Komang Mudana 4 лет назад
Родитель
Сommit
d72e59f328

+ 8 - 0
packages/app/src/server/models/user.js

@@ -698,6 +698,14 @@ module.exports = function(crowi) {
     return user;
   };
 
+  userSchema.statics.findUsersBySlackIds = async function(slackIds) {
+    const users = this.find({ slackId: { $in: slackIds } });
+    if (!users) {
+      throw new Error('No user found');
+    }
+    return users;
+  };
+
   class UserUpperLimitException {
 
     constructor() {

+ 17 - 3
packages/app/src/server/service/slack-command-handler/keep.js

@@ -139,20 +139,34 @@ module.exports = (crowi) => {
     return result;
   };
 
+  /**
+   * Get all growi users from messages
+   * @param {*} messages (array of messages)
+   * @returns users object with matching slack ID
+   */
+  handler.getGrowiUsersFromMessages = async function(messages) {
+    const users = messages.map((message) => {
+      return message.user;
+    });
+    const growiUsers = await User.findUsersBySlackIds(users);
+    return growiUsers;
+  };
   /**
    * Convert slack ID to growi user if slack ID is found in messages
    * @param {*} messages
    */
   handler.messagesWithGrowiUser = async function(messages) {
-    await Promise.all(messages.map(async(message) => {
-      const growiUser = await User.findUserBySlackId(message.user);
+    const growiUsers = await this.getGrowiUsersFromMessages(messages);
+
+    messages.map(async(message) => {
+      const growiUser = growiUsers.find(user => user.slackId === message.user);
       if (growiUser) {
         message.user = `${growiUser.name} (@${growiUser.username})`;
       }
       else {
         message.user = `This slack ID is not registered (${message.user})`;
       }
-    }));
+    });
   };
 
   handler.keepCleanMessages = async function(messages) {