diff --git a/src/addons/messages/pages/discussion/discussion.ts b/src/addons/messages/pages/discussion/discussion.ts index fcc8dc0c1..307167767 100644 --- a/src/addons/messages/pages/discussion/discussion.ts +++ b/src/addons/messages/pages/discussion/discussion.ts @@ -65,7 +65,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView protected messagesBeingSent = 0; protected pagesLoaded = 1; - protected lastMessage = { text: '', timecreated: 0 }; + protected lastMessage?: { text: string; timecreated: number }; protected keepMessageMap: {[hash: string]: boolean} = {}; protected syncObserver: CoreEventObserver; protected oldContentHeight = 0; @@ -465,7 +465,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView // If we received a new message while using group messaging, force mark messages as read. const last = this.messages[this.messages.length - 1]; - const forceMark = this.groupMessagingEnabled && last && last.useridfrom != this.currentUserId && this.lastMessage.text != '' + const forceMark = this.groupMessagingEnabled && last && last.useridfrom !== this.currentUserId && !!this.lastMessage && (last.text !== this.lastMessage.text || last.timecreated !== this.lastMessage.timecreated); // Notify that there can be a new message. @@ -773,14 +773,14 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView * Notify the last message found so discussions list controller can tell if last message should be updated. */ protected notifyNewMessage(): void { - const last = this.messages[this.messages.length - 1]; + const last = this.messages[this.messages.length - 1] as AddonMessagesConversationMessageFormatted | undefined; let trigger = false; if (!last) { - this.lastMessage = { text: '', timecreated: 0 }; + this.lastMessage = undefined; trigger = true; - } else if (last.text !== this.lastMessage.text || last.timecreated !== this.lastMessage.timecreated) { + } else if (last.text !== this.lastMessage?.text || last.timecreated !== this.lastMessage?.timecreated) { this.lastMessage = { text: last.text || '', timecreated: last.timecreated }; trigger = true; } @@ -790,8 +790,9 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView CoreEvents.trigger(AddonMessagesProvider.NEW_MESSAGE_EVENT, { conversationId: this.conversationId, userId: this.userId, - message: this.lastMessage.text, - timecreated: this.lastMessage.timecreated, + message: this.lastMessage?.text, + timecreated: this.lastMessage?.timecreated ?? 0, + userFrom: last?.useridfrom ? this.members[last.useridfrom] : undefined, isfavourite: !!this.conversation?.isfavourite, type: this.conversation?.type, }, this.siteId); diff --git a/src/addons/messages/pages/discussions-35/discussions.ts b/src/addons/messages/pages/discussions-35/discussions.ts index 3b597d0c7..f82f985ae 100644 --- a/src/addons/messages/pages/discussions-35/discussions.ts +++ b/src/addons/messages/pages/discussions-35/discussions.ts @@ -89,7 +89,7 @@ export class AddonMessagesDiscussions35Page implements OnInit, OnDestroy { }); } else if (discussion.message) { // An existing discussion has a new message, update the last message. - discussion.message.message = data.message; + discussion.message.message = data.message ?? ''; discussion.message.timecreated = data.timecreated; } } diff --git a/src/addons/messages/pages/group-conversations/group-conversations.html b/src/addons/messages/pages/group-conversations/group-conversations.html index 109cedd73..9cca75e2d 100644 --- a/src/addons/messages/pages/group-conversations/group-conversations.html +++ b/src/addons/messages/pages/group-conversations/group-conversations.html @@ -185,7 +185,7 @@