diff --git a/src/components/Messages/MessageList/index.js b/src/components/Messages/MessageList/index.js index 27abbff57..f9de64553 100644 --- a/src/components/Messages/MessageList/index.js +++ b/src/components/Messages/MessageList/index.js @@ -129,7 +129,7 @@ export class MessageList extends MemoizedComponent { attachmentResolver={attachmentResolver} avatarResolver={avatarResolver} use='li' - me={uid && message.u && uid === message.u._id} + me={!!message.token} compact={nextMessage && message.u && nextMessage.u && message.u._id === nextMessage.u._id} conversationFinishedMessage={conversationFinishedMessage} {...message} diff --git a/src/lib/room.js b/src/lib/room.js index e4e6c0e0b..62c49c4cf 100644 --- a/src/lib/room.js +++ b/src/lib/room.js @@ -82,6 +82,20 @@ export const initRoom = async () => { parentCall('callback', ['queue-position-change', queueInfo]); }); + Livechat.onVisitorChange(rid, async (newVisitor) => { + const { user: { _updatedAt = null } = {}, room } = store.state; + const { _id, token, username } = newVisitor; + + Livechat.credentials.token = token; + + await store.setState({ + user: { _id, token, username, _updatedAt }, + token, + room: { ...room, v: { _id, token, username } }, + }); + parentCall('callback', ['visitor-change', newVisitor]); + }); + setCookies(rid, token); }; diff --git a/src/widget.js b/src/widget.js index be5bb6d08..e6c8342e0 100644 --- a/src/widget.js +++ b/src/widget.js @@ -36,6 +36,7 @@ export const validCallbacks = [ 'agent-status-change', 'queue-position-change', 'no-agent-online', + 'visitor-change', ]; const callbacks = mitt(); @@ -433,6 +434,7 @@ window.RocketChat.livechat = { onAgentStatusChange(fn) { registerCallback('agent-status-change', fn); }, onQueuePositionChange(fn) { registerCallback('queue-position-change', fn); }, onServiceOffline(fn) { registerCallback('no-agent-online', fn); }, + onVisitorChange(fn) { registerCallback('visitor-change', fn); }, }; // proccess queue