From caa4d9e9b32b2914927f83b7f10217f5aabb602c Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Fri, 7 Jun 2019 08:49:32 +0200 Subject: [PATCH] MOBILE-3039 messages: Fix mark as read not called in 3.6+ --- src/addon/messages/pages/discussion/discussion.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/addon/messages/pages/discussion/discussion.ts b/src/addon/messages/pages/discussion/discussion.ts index 1b0036998..88c6396ac 100644 --- a/src/addon/messages/pages/discussion/discussion.ts +++ b/src/addon/messages/pages/discussion/discussion.ts @@ -390,11 +390,16 @@ export class AddonMessagesDiscussionPage implements OnDestroy { // Call resize to recalculate the dimensions. this.content && this.content.resize(); + // If we received a new message while using group messaging, force mark messages as read. + const last = this.messages[this.messages.length - 1], + forceMark = this.groupMessagingEnabled && last && last.useridfrom != this.currentUserId && this.lastMessage.text != '' + && (last.text !== this.lastMessage.text || last.timecreated !== this.lastMessage.timecreated); + // Notify that there can be a new message. this.notifyNewMessage(); // Mark retrieved messages as read if they are not. - this.markMessagesAsRead(); + this.markMessagesAsRead(forceMark); } /** @@ -576,7 +581,7 @@ export class AddonMessagesDiscussionPage implements OnDestroy { /** * Mark messages as read. */ - protected markMessagesAsRead(): void { + protected markMessagesAsRead(forceMark: boolean): void { let readChanged = false; const promises = []; @@ -584,7 +589,9 @@ export class AddonMessagesDiscussionPage implements OnDestroy { let messageUnreadFound = false; // Mark all messages at a time if there is any unread message. - if (this.groupMessagingEnabled) { + if (forceMark) { + messageUnreadFound = true; + } else if (this.groupMessagingEnabled) { messageUnreadFound = this.conversation && this.conversation.unreadcount > 0 && this.conversationId > 0; } else { for (const x in this.messages) { @@ -648,6 +655,7 @@ export class AddonMessagesDiscussionPage implements OnDestroy { const last = this.messages[this.messages.length - 1]; let trigger = false; + if (!last) { this.lastMessage = {text: '', timecreated: 0}; trigger = true;