@@ -627,7 +627,7 @@ function isChatMessage(message) {
627627}
628628
629629
630- window . WAPI . getUnreadMessages = function ( includeMe , includeNotifications , done ) {
630+ window . WAPI . getUnreadMessages = function ( includeMe , includeNotifications , use_unread_count , done ) {
631631 const chats = Store . Chat . models ;
632632 let output = [ ] ;
633633 for ( let chat in chats ) {
@@ -643,10 +643,10 @@ window.WAPI.getUnreadMessages = function (includeMe, includeNotifications, done)
643643 for ( let i = messages . length - 1 ; i >= 0 ; i -- ) {
644644 let messageObj = messages [ i ] ;
645645 if ( messageObj . __x_isNewMsg || messageObj . __x_MustSent ) {
646- let message = WAPI . processMessageObj ( messageObj , includeMe , includeNotifications ) ;
646+ let message = WAPI . processMessageObj ( messageObj , includeMe , includeNotifications ) ;
647647 if ( message ) {
648- messageObj . __x_isNewMsg = false ;
649- messageObj . __x_MustSent = false ;
648+ messageObj . __x_isNewMsg = false ;
649+ messageObj . __x_MustSent = false ;
650650 messageGroup . messages . unshift ( message ) ;
651651 }
652652 } else {
@@ -656,7 +656,34 @@ window.WAPI.getUnreadMessages = function (includeMe, includeNotifications, done)
656656
657657 if ( messageGroup . messages . length > 0 ) {
658658 output . push ( messageGroup ) ;
659+ } else { // no messages with isNewMsg true
660+ if ( use_unread_count ) {
661+ let n = messageGroupObj . __x_unreadCount ; // will use unreadCount attribute to fetch last n messages from sender
662+ for ( let i = messages . length - 1 ; i >= 0 ; i -- ) {
663+ let messageObj = messages [ i ] ;
664+ if ( n > 0 ) {
665+ if ( ! messageObj . __x_isSentByMe ) {
666+ let message = WAPI . processMessageObj ( messageObj , includeMe , includeNotifications ) ;
667+ messageGroup . messages . unshift ( message ) ;
668+ n -= 1 ;
669+ }
670+ } else if ( n === - 1 ) { // chat was marked as unread so will fetch last message as unread
671+ if ( ! messageObj . __x_isSentByMe ) {
672+ let message = WAPI . processMessageObj ( messageObj , includeMe , includeNotifications ) ;
673+ messageGroup . messages . unshift ( message ) ;
674+ break ;
675+ }
676+ } else { // unreadCount = 0
677+ break ;
678+ }
679+ }
680+ if ( messageGroup . messages . length > 0 ) {
681+ messageGroupObj . __x_unreadCount = 0 ; // reset unread counter
682+ output . push ( messageGroup ) ;
683+ }
684+ }
659685 }
686+
660687 }
661688 if ( done !== undefined ) {
662689 done ( output ) ;
@@ -682,7 +709,7 @@ window.WAPI.markDefaultUnreadMessages = function (done) {
682709 if ( messageObj . __x_isSentByMe ) {
683710 break ;
684711 } else {
685- messageObj . __x_MustSent = true ;
712+ messageObj . __x_MustSent = true ;
686713 }
687714 }
688715 }
0 commit comments