load user info per conversation.id (#11368)

* load user info per conversation.id

* fix projection
This commit is contained in:
negue 2019-09-20 17:37:36 +02:00 committed by Matteo Pagliazzi
parent d29a7ef651
commit f3372716d9

View file

@ -1,6 +1,7 @@
import {mapInboxMessage, inboxModel as Inbox} from '../../models/message';
import {getUserInfo, sendTxn as sendTxnEmail} from '../email';
import {sendNotification as sendPushNotification} from '../pushNotifications';
import { model as User } from '../../models/user';
const PM_PER_PAGE = 10;
@ -89,8 +90,6 @@ export async function listConversations (owner) {
username: {$last: '$username' },
timestamp: {$last: '$timestamp'},
text: {$last: '$text'},
userStyles: {$last: '$userStyles'},
contributor: {$last: '$contributor'},
count: {$sum: 1},
},
},
@ -99,9 +98,32 @@ export async function listConversations (owner) {
const conversationsList = await query.exec();
const usersQuery = {
_id: {$in: conversationsList.map(c => c._id) },
};
const usersAr = await User.find(usersQuery, {
_id: 1,
contributor: 1,
items: 1,
preferences: 1,
stats: 1,
}).exec();
const usersMap = {};
for (const usr of usersAr) {
usersMap[usr._id] = usr;
}
const conversations = conversationsList.map((res) => ({
uuid: res._id,
...res,
userStyles: {
items: usersMap[res._id].items,
preferences: usersMap[res._id].preferences,
stats: usersMap[res._id].stats,
},
contributor: usersMap[res._id].contributor,
}));
return conversations;