@@ -869,12 +869,24 @@ function conversationIdForMessage(message) {
869869 return 'global' ;
870870 }
871871
872+ if ( message . roomId ) {
873+ for ( const conversation of state . conversations . values ( ) ) {
874+ if ( conversation . roomId === message . roomId ) {
875+ return conversation . id ;
876+ }
877+ }
878+ }
879+
872880 const roomConversationId = groupConversationId ( message . roomId ) ;
873881
874882 if ( state . conversations . has ( roomConversationId ) ) {
875883 return roomConversationId ;
876884 }
877885
886+ if ( message . kind === 'bot' || ( message . metadata && message . metadata . bot ) ) {
887+ return state . activeConversationId || 'global' ;
888+ }
889+
878890 if ( state . currentUser && message . fromUserId !== state . currentUser . userId ) {
879891 ensureDirectConversationFromUserId ( message . fromUserId ) ;
880892 return directConversationId ( message . fromUserId ) ;
@@ -1581,11 +1593,13 @@ function appendMessageElement(message) {
15811593 }
15821594
15831595 const isOwn = state . currentUser && message . fromUserId === state . currentUser . userId ;
1584- const sender = findDisplayName ( message . fromUserId ) ;
1596+ const sender = displayNameForMessage ( message ) ;
15851597 const createdAt = formatTime ( message . createdAt ) ;
1598+ const isBot = message . kind === 'bot' || Boolean ( message . metadata && message . metadata . bot ) ;
15861599
15871600 const row = document . createElement ( 'div' ) ;
15881601 row . className = isOwn ? 'message-row is-own' : 'message-row' ;
1602+ row . classList . toggle ( 'is-bot' , isBot ) ;
15891603 row . dataset . messageId = message . id ;
15901604
15911605 const footer = document . createElement ( 'div' ) ;
@@ -1762,6 +1776,14 @@ function findDisplayName(userId) {
17621776 return user . displayName ;
17631777}
17641778
1779+ function displayNameForMessage ( message ) {
1780+ if ( message && message . metadata && message . metadata . botName ) {
1781+ return message . metadata . botName ;
1782+ }
1783+
1784+ return findDisplayName ( message . fromUserId ) ;
1785+ }
1786+
17651787function formatTime ( value ) {
17661788 if ( ! value ) {
17671789 return 'now' ;
0 commit comments