From d53bb79bd68721abaf03254b4200a52e5aef2284 Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Tue, 24 Oct 2017 11:09:08 -0400 Subject: [PATCH] conversations: prevents received messages from reverting status - Message engine will cause erroneous status updates to SENDING or FAILURE for messages already SENT or READ. This patch treats these cases client side. Change-Id: Icd5df2728bb83f8a4ba193f653e12f68935aa4bd Reviewed-by: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> --- Ring/Ring/Services/ConversationsService.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Ring/Ring/Services/ConversationsService.swift b/Ring/Ring/Services/ConversationsService.swift index 0eff2be4b..8feedf760 100644 --- a/Ring/Ring/Services/ConversationsService.swift +++ b/Ring/Ring/Services/ConversationsService.swift @@ -68,9 +68,10 @@ class ConversationsService: MessagesAdapterDelegate { */ for conversation in results.toArray() { for message in (conversation.messages) { - if message.id != "" && (message.status == .unknown || message.status == .sending ) { + if !message.id.isEmpty && (message.status == .unknown || message.status == .sending ) { let updatedMessageStatus = self.status(forMessageId: message.id) - if updatedMessageStatus != message.status { + if (updatedMessageStatus.rawValue > message.status.rawValue && updatedMessageStatus != .failure) || + (updatedMessageStatus == .failure && message.status == .sending) { self.setMessageStatus(withMessage: message, withStatus: updatedMessageStatus) .subscribe(onCompleted: { [] in print("Message status updated - load") @@ -268,7 +269,9 @@ class ConversationsService: MessagesAdapterDelegate { //Find message if let message = conversation?.messages.filter({ messages in - return !messages.id.isEmpty && messages.id == String(messageId) && messages.status != status + return !messages.id.isEmpty && messages.id == String(messageId) && + ((status.rawValue > messages.status.rawValue && status != .failure) || + (status == .failure && messages.status == .sending)) }).first { self.setMessageStatus(withMessage: message, withStatus: status) -- GitLab