@@ -410,10 +410,16 @@ class Threads {
410410 }
411411
412412 // Remove the last message date time elements.
413- let lastMessageDateTimeEle = document . getElementById ( "ch_thread_msg_datetime_" +
414- this . threadsMessages [ this . threadsMessages . length - 1 ] [ 'id' ] ) ;
415- if ( lastMessageDateTimeEle ) {
416- lastMessageDateTimeEle . remove ( ) ;
413+ if ( loadMoreMessages && messages . length ) {
414+ if ( moment ( new Date ( messages [ 0 ] . createdAt ) ) . format ( 'DD/MM/YYYY' ) ==
415+ moment ( new Date ( this . threadsMessages [ this . threadsMessages . length - 1 ] . createdAt ) ) . format ( 'DD/MM/YYYY' )
416+ ) {
417+ let lastMessageDateTimeEle = document . getElementById ( "ch_thread_msg_datetime_" +
418+ this . threadsMessages [ this . threadsMessages . length - 1 ] [ 'id' ] ) ;
419+ if ( lastMessageDateTimeEle ) {
420+ lastMessageDateTimeEle . remove ( ) ;
421+ }
422+ }
417423 }
418424
419425 this . threadsMessages = this . threadsMessages . concat ( messages ) ;
@@ -550,23 +556,21 @@ class Threads {
550556 }
551557
552558 _createParentMessageBubble ( message , messagesBox ) {
553-
554559 let threadStart = document . getElementById ( "ch_thread_start" ) ;
555560 if ( ! threadStart ) {
556561 // Create message frame
557- this . _createMessageBubble ( message , messagesBox , false ) ;
562+ this . _createMessageBubble ( message , messagesBox , false , false , false ) ;
558563
564+ let parentMessage = document . getElementById ( "thread_" + message . id ) ;
559565 // Create a line breaker b/w parent and chid message.
560566 let threadStartAttributes = [ { "id" :"ch_thread_start" } , { "class" :"ch-thread-start ch-msg-bubble" } ] ;
561- let threadStart = this . utility . createElement ( "div" , threadStartAttributes , null , messagesBox ) ;
567+ let threadStart = this . utility . createElement ( "div" , threadStartAttributes , null , parentMessage ) ;
562568
563569 let threadLineSpanAttributes = [ ] ;
564570 let threadLineSpan = this . utility . createElement ( "span" , threadLineSpanAttributes , LANGUAGE_PHRASES . START_OF_A_NEW_THREAD , threadStart ) ;
565571
566- // Set parent message and line breaker position
567- let parentMessage = document . getElementById ( "thread_" + message . id ) ;
572+ // Set parent message position
568573 messagesBox . insertBefore ( parentMessage , messagesBox . childNodes [ 0 ] ) ;
569- messagesBox . insertBefore ( threadStart , messagesBox . childNodes [ 1 ] ) ;
570574
571575 // Add date time on the top of the parent message.
572576 let msgDateTimeAttributes = [ { "id" :"ch_thread_msg_datetime_" + message . id } , { "class" :"ch-msg-datetime" } ] ;
@@ -1073,7 +1077,7 @@ class Threads {
10731077 let messagesBox = document . getElementById ( "ch_thread_messages_box" ) ;
10741078
10751079 // Create message frame
1076- this . _createMessageBubble ( msgData , messagesBox , false , true ) ;
1080+ this . _createMessageBubble ( msgData , messagesBox , false , true , true ) ;
10771081 }
10781082
10791083 addNewMessage ( message , newConversation ) {
@@ -1115,7 +1119,7 @@ class Threads {
11151119 message . createdAt = new Date ( ) ;
11161120
11171121 // Create message frame
1118- this . _createMessageBubble ( message , messagesBox , false ) ;
1122+ this . _createMessageBubble ( message , messagesBox , true , true , false ) ;
11191123 }
11201124
11211125 _getMessages ( conversation , limit , skip , cb ) {
@@ -1126,31 +1130,47 @@ class Threads {
11261130 } ) ;
11271131 }
11281132
1129- _isDateDiffShown ( messageId ) {
1130- const messageIndex = this . threadsMessages . findIndex ( message => message . id == messageId ) ;
1133+ _isDateDiffShown ( currentMsgId , lastMsgId , isNewMessage ) {
1134+ const messageIndex = this . threadsMessages . findIndex ( message => message . id == currentMsgId ) ;
11311135 if ( messageIndex == - 1 ) {
11321136 return false ;
11331137 }
1138+ const currentMsgDate = moment ( new Date ( this . threadsMessages [ messageIndex ] . createdAt ) ) . format ( 'DD/MM/YYYY' ) ;
1139+ if ( isNewMessage ) {
1140+ // This in only one message.
1141+ if ( ! lastMsgId ) {
1142+ return true ;
1143+ }
1144+ const lastMsgIndex = this . threadsMessages . findIndex ( message => message . id == lastMsgId ) ;
1145+ if ( lastMsgIndex == - 1 ) {
1146+ return true ;
1147+ }
1148+ const lastMsgDate = moment ( new Date ( this . threadsMessages [ lastMsgIndex ] . createdAt ) ) . format ( 'DD/MM/YYYY' ) ;
1149+ if ( currentMsgDate != lastMsgDate ) {
1150+ return true ;
1151+ }
1152+ return false ;
1153+ }
11341154
11351155 if ( ! this . threadsMessages [ messageIndex + 1 ] ) {
11361156 return true ;
11371157 }
11381158
1139- const currentMsgDate = moment ( new Date ( this . threadsMessages [ messageIndex ] . createdAt ) ) . format ( 'DD/MM/YYYY' ) ;
11401159 const nextMsgDate = moment ( new Date ( this . threadsMessages [ messageIndex + 1 ] . createdAt ) ) . format ( 'DD/MM/YYYY' ) ;
1141-
11421160 if ( currentMsgDate != nextMsgDate ) {
11431161 return true ;
11441162 }
1145- return false
1163+ return false ;
11461164 }
11471165
1148- _createMessageBubble ( message , messagesBox , showDateDiff = true , isPendingMessage = false ) {
1166+ _createMessageBubble ( message , messagesBox , showDateDiff = true , isNewMessage = false , isPendingMessage = false ) {
11491167 // Create message list
1168+ const lastMsgId = messagesBox . lastChild && messagesBox . lastChild . id . replace ( "thread_" , "" ) ;
1169+
11501170 let msgBubbleEleAttributes = [ { "id" :"thread_" + message . id } , { "class" :"ch-msg-bubble" } ] ;
11511171 let msgBubbleEle = this . utility . createElement ( "div" , msgBubbleEleAttributes , null , messagesBox ) ;
11521172
1153- if ( showDateDiff && this . _isDateDiffShown ( message . id ) ) {
1173+ if ( showDateDiff && this . _isDateDiffShown ( message . id , lastMsgId , isNewMessage ) ) {
11541174 let msgDateTimeAttributes = [ { "id" :"ch_thread_msg_datetime_" + message . id } , { "class" :"ch-msg-datetime" } ] ;
11551175 this . utility . createElement ( "div" , msgDateTimeAttributes , this . utility . formatDate ( message . createdAt ) , msgBubbleEle ) ;
11561176 }
@@ -1182,7 +1202,7 @@ class Threads {
11821202
11831203 // Create message more options
11841204 if ( ( message . ownerId == this . liveStream . userId ) && ! message . isDeleted ) {
1185- let moreOptionAttributes = [ { "class" :"ch-msg-more-option ch-right" } , { "title" :LANGUAGE_PHRASES . MORE_OPTIONS } ] ;
1205+ let moreOptionAttributes = [ { "id" : "ch_thread_message_more_option_" + message . id } , { " class" :"ch-msg-more-option ch-right" } , { "title" :LANGUAGE_PHRASES . MORE_OPTIONS } ] ;
11861206 let moreOption = this . utility . createElement ( "i" , moreOptionAttributes , "more_vert" , msgBubbleEle ) ;
11871207 moreOption . classList . add ( "material-icons" ) ;
11881208
@@ -1196,7 +1216,7 @@ class Threads {
11961216
11971217 // Create add reaction div.
11981218 if ( this . reactionsSetting . enable && message . ownerId != this . liveStream . userId && ! message . isDeleted ) {
1199- let addReactionEleAttributes = [ { "class" :"ch-add-reaction-option" } , { "title" :LANGUAGE_PHRASES . REACT_TO_THIS_MESSAGE } ] ;
1219+ let addReactionEleAttributes = [ { "id" : "ch_thread_message_insert_emoticon_" + message . id } , { " class" :"ch-add-reaction-option" } , { "title" :LANGUAGE_PHRASES . REACT_TO_THIS_MESSAGE } ] ;
12001220 let addReactionEle = this . utility . createElement ( "i" , addReactionEleAttributes , "insert_emoticon" , msgBubbleEle ) ;
12011221 addReactionEle . classList . add ( "material-icons" ) ;
12021222
@@ -1351,18 +1371,24 @@ class Threads {
13511371 targetAttachmentCard . remove ( ) ;
13521372 }
13531373
1354- // Update listener of deleted message
1374+ // Update more option listener of deleted message
13551375 let targetMessage = document . getElementById ( "thread_" + data . messages [ 0 ] . id ) ;
1356- if ( targetMessage ) {
1357- let deletedMsgOptionBtn = targetMessage . lastChild ;
1358- deletedMsgOptionBtn . addEventListener ( "click" , data => {
1376+ let moreOptionBtn = document . getElementById ( "ch_thread_message_more_option_" + data . messages [ 0 ] . id ) ;
1377+ if ( moreOptionBtn ) {
1378+ moreOptionBtn . addEventListener ( "click" , data => {
13591379 // Remove delete for everyone option
13601380 let deleteForEveryoneBtn = document . getElementById ( "ch_msg_delete_for_everyone" ) ;
13611381 if ( deleteForEveryoneBtn ) {
13621382 deleteForEveryoneBtn . remove ( ) ;
13631383 }
13641384 } ) ;
13651385 }
1386+
1387+ // Update insert emoticon listener of deleted message
1388+ let insertEmoticonBtn = document . getElementById ( "ch_thread_message_insert_emoticon_" + data . messages [ 0 ] . id ) ;
1389+ if ( insertEmoticonBtn ) {
1390+ insertEmoticonBtn . remove ( ) ;
1391+ }
13661392 }
13671393
13681394 handleAddReaction ( data ) {
0 commit comments