|
@@ -164,24 +164,28 @@ const upload = require('multer')({ dest: uploadPath })
|
|
|
if (user.chats.some(chat => chat._id.toString() === msg.chat._id.toString())){
|
|
|
let {_id, createdAt, text, chat, media, replyTo, forwarded, owner} = msg
|
|
|
await chat;
|
|
|
- await media;
|
|
|
+ await Promise.all(media || []);
|
|
|
await replyTo;
|
|
|
await forwarded;
|
|
|
owner = await owner;
|
|
|
- socket.emit('msg', {_id, createdAt, text, chat: chat && {_id: chat._id, title: chat.title},
|
|
|
- media: media && {_id: media._id, url: media.url},
|
|
|
+ await owner.avatar
|
|
|
+ console.log('MEDIA', media)
|
|
|
+ socket.emit('msg', {_id, createdAt: createdAt.getTime(), text, chat: chat && {_id: chat._id, title: chat.title},
|
|
|
+ media: media && media.map(media => ({_id: media._id, url: media.url, type: media.type})),
|
|
|
replyTo: replyTo && {_id: replyTo._id, text: replyTo.text},
|
|
|
forwarded: forwarded && {_id: forwarded._id, text: forwarded.text},
|
|
|
- owner: {_id: owner._id, login: owner.login, nick: owner.nick}})
|
|
|
+ owner: {_id: owner._id, login: owner.login, nick: owner.nick, avatar: owner.avatar && {url: owner.avatar.url}}})
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async function chatWatcher({members, _id, createdAt, title, messages, avatar, lastModified}){
|
|
|
+ async function chatWatcher({_loadRelations, members, _id, createdAt, title, messages, avatar, lastModified}){
|
|
|
|
|
|
console.log('CHAT SAVE', _id, title)
|
|
|
for (let [id,{user, socket}] of Object.entries(sockets)){
|
|
|
- if (members.some(member => member._id.toString() === user._id.toString())){
|
|
|
+ const isMember = members.some(member => member._id.toString() === user._id.toString())
|
|
|
+ const wasMember =(_loadRelations.members && _loadRelations.members.some(member => member._id.toString() === user._id.toString()))
|
|
|
+ if (isMember || wasMember){
|
|
|
//await chat;
|
|
|
//await media;
|
|
|
//await replyTo;
|
|
@@ -189,8 +193,8 @@ const upload = require('multer')({ dest: uploadPath })
|
|
|
await avatar;
|
|
|
await Promise.all(members)
|
|
|
//owner = await owner;
|
|
|
- console.log('EMIT', _id, createdAt, title)
|
|
|
- socket.emit('chat', {_id, createdAt, title, avatar: avatar && {_id: avatar._id, url: avatar.url}, members: members.map(({_id, login, nick}) => ({_id, login, nick})), lastModified})
|
|
|
+ console.log('EMIT', _id, createdAt.getTime(), title)
|
|
|
+ socket.emit(isMember ? 'chat' : 'chat_left', {_id, createdAt: createdAt.getTime(), title, avatar: avatar && {_id: avatar._id, url: avatar.url}, members: members.map(({_id, login, nick}) => ({_id, login, nick})), lastModified})
|
|
|
}
|
|
|
}
|
|
|
}
|