From e14fc4b2dcd301fceb6b2fc09372386c679485d2 Mon Sep 17 00:00:00 2001 From: nixzhu Date: Fri, 4 Dec 2015 18:09:01 +0800 Subject: [PATCH] adjust lastReadAt from Server (it may old few seconds) --- Yep/Services/FayeService.swift | 12 +++++++----- Yep/Services/YepService.swift | 2 ++ .../Conversation/ConversationViewController.swift | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Yep/Services/FayeService.swift b/Yep/Services/FayeService.swift index 45888cfc..8a56c6f8 100644 --- a/Yep/Services/FayeService.swift +++ b/Yep/Services/FayeService.swift @@ -176,14 +176,16 @@ class FayeService: NSObject, MZFayeClientDelegate { if let messageDataInfo = messageInfo["message"] as? JSONDictionary { if let - last_read_at = messageDataInfo["last_read_at"] as? NSTimeInterval, - recipient_type = messageDataInfo["recipient_type"] as? String, - recipient_id = messageDataInfo["recipient_id"] as? String { + lastReadAt = messageDataInfo["last_read_at"] as? NSTimeInterval, + recipientType = messageDataInfo["recipient_type"] as? String, + recipientID = messageDataInfo["recipient_id"] as? String { - println("Mark recipient_id \(recipient_id) As Read") + println("Mark recipient_id \(recipientID) As Read") + + let lastReadAt = lastReadAt + 5 // 治标:服务器返回的时间可能较旧,会导致最后一条消息无法被标记 dispatch_async(dispatch_get_main_queue()) { - NSNotificationCenter.defaultCenter().postNotificationName(MessageNotification.MessageBatchMarkAsRead, object: ["last_read_at": last_read_at, "recipient_type": recipient_type, "recipient_id": recipient_id]) + NSNotificationCenter.defaultCenter().postNotificationName(MessageNotification.MessageBatchMarkAsRead, object: ["last_read_at": lastReadAt, "recipient_type": recipientType, "recipient_id": recipientID]) //self?.delegate?.fayeMessagesMarkAsReadByRecipient(last_read_at, recipientType: recipient_type, recipientID: recipient_id) } } diff --git a/Yep/Services/YepService.swift b/Yep/Services/YepService.swift index 28991bdd..f80a88ab 100644 --- a/Yep/Services/YepService.swift +++ b/Yep/Services/YepService.swift @@ -2103,6 +2103,8 @@ func createAndSendMessageWithMediaType(mediaType: MessageMediaType, inFilePath f let message = Message() + println("send newMessage.createdUnixTime: \(message.createdUnixTime)") + // 确保本地刚创建的消息比任何已有的消息都要新 if let latestMessage = realm.objects(Message).sorted("createdUnixTime", ascending: true).last { if message.createdUnixTime < latestMessage.createdUnixTime { diff --git a/Yep/ViewControllers/Conversation/ConversationViewController.swift b/Yep/ViewControllers/Conversation/ConversationViewController.swift index 472bc224..5d073ed0 100644 --- a/Yep/ViewControllers/Conversation/ConversationViewController.swift +++ b/Yep/ViewControllers/Conversation/ConversationViewController.swift @@ -1998,6 +1998,8 @@ class ConversationViewController: BaseViewController { private func markAsReadAllSentMesagesBeforeUnixTime(unixTime: NSTimeInterval) { + println("markAsReadAllSentMesagesBeforeUnixTime: \(unixTime)") + dispatch_async(dispatch_get_main_queue()) { [weak self] in guard let recipient = self?.conversation.recipient else { @@ -2042,7 +2044,7 @@ class ConversationViewController: BaseViewController { } if recipientID == conversation.recipient?.ID && recipientType == conversation.recipient?.type.nameForServer { - self.markAsReadAllSentMesagesBeforeUnixTime(lastReadUnixTime) + markAsReadAllSentMesagesBeforeUnixTime(lastReadUnixTime) } }