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

update cache when show seen users list

yusuketk 5 лет назад
Родитель
Сommit
37a056142a
2 измененных файлов с 14 добавлено и 14 удалено
  1. 9 10
      src/client/js/services/PageContainer.js
  2. 5 4
      src/server/routes/apiv3/users.js

+ 9 - 10
src/client/js/services/PageContainer.js

@@ -94,16 +94,15 @@ export default class PageContainer extends Container {
     // [TODO][GW - 1942] add method for updating imageUrlCached and populate
     if (seenUserListElem != null) {
       const userIdsStr = seenUserListElem.dataset.userIds;
-      const res = await this.appContainer.apiGet('/users.list', { user_ids: userIdsStr.split(',') });
-      const users = res.data.users;
-      const userIds = users.map((user) => {
-        if (user.imageUrlCached) {
-          return user.id;
-        }
-        return;
-      });
-      const usersUpdatedImageUrlCached = await this.appContainer.apiv3Put('/users/update.imageUrlCache', { userIds });
-      this.state.seenUserIds = usersUpdatedImageUrlCached;
+      this.state.seenUserIds = userIdsStr.split(',');
+      const res = await this.appContainer.apiGet('/users.list', { user_ids: userIdsStr });
+      const users = res.users;
+      const noImageCacheUsers = users.filter((user) => { return !user.imageUrlCached });
+      if (noImageCacheUsers.length > 0) {
+        const noImageCacheUserIds = noImageCacheUsers.map((user) => { return user.id });
+        const usersUpdatedImageUrlCached = await this.appContainer.apiv3Put('/users/update.imageUrlCache', { userIds: noImageCacheUserIds });
+        this.state.seenUserIds = usersUpdatedImageUrlCached;
+      }
     }
 
 

+ 5 - 4
src/server/routes/apiv3/users.js

@@ -576,20 +576,21 @@ module.exports = (crowi) => {
     try {
       const userIds = req.body.userIds;
       const users = await User.find({ _id: { $in: userIds } });
-      const requests = users.map((user) => {
+      const requests = await Promise.all(users.map(async(user) => {
         return {
           updateOne: {
             filter: { _id: user._id },
-            update: { $set: { imageUrlCached: user.generateImageUrlCached() } },
+            update: { $set: { imageUrlCached: await user.generateImageUrlCached() } },
           },
         };
-      });
+      }));
 
       if (requests.length > 0) {
         await User.bulkWrite(requests);
       }
 
-      return res.apiv3({});
+      // GW-1942 TODO return updated users
+      return res.apiv3({ users });
     }
     catch (err) {
       logger.error('Error', err);