add batchMarkMessagesAsReaded use in Conversation

This commit is contained in:
nixzhu
2015-10-20 12:39:04 +08:00
committed by nixzhu
parent 82678596e6
commit ec971643fc
@@ -603,14 +603,31 @@ class ConversationViewController: BaseViewController {
//
conversation.messages.filter({ message in
if let fromFriend = message.fromFriend {
return (message.readed == false) && (fromFriend.friendState != UserFriendState.Me.rawValue)
} else {
return false
}
}).forEach({ self.markMessageAsReaded($0) })
// conversation.messages.filter({ message in
// if let fromFriend = message.fromFriend {
//
// return (message.readed == false) && (fromFriend.friendState != UserFriendState.Me.rawValue)
// } else {
// return false
// }
// }).forEach({ self.markMessageAsReaded($0) })
batchMarkMessagesAsReaded(needUpdateAllMessages: true)
// if let _ = conversation.withFriend, recipient = conversation.recipient, latestMessage = messages.last {
//
// messages.forEach { message in
// if !message.readed {
// let _ = try? realm.write {
// message.readed = true
// }
// }
// }
//
// batchMarkAsReadOfMessagesToRecipient(recipient, beforeMessage: latestMessage, failureHandler: nil, completion: {
// println("batchMarkAsReadOfMessagesToRecipient OK")
// })
// }
// MARK: Notify Typing
@@ -894,35 +911,60 @@ class ConversationViewController: BaseViewController {
}
}
private func markMessageAsReaded(message: Message) {
// private func markMessageAsReaded(message: Message) {
//
// if message.readed {
// return
// }
//
// //
//
// if navigationController?.topViewController == self {
//
// let messageID = message.messageID
//
// dispatch_async(realmQueue) {
// guard let realm = try? Realm() else {
// return
// }
//
// if let message = messageWithMessageID(messageID, inRealm: realm) {
// let _ = try? realm.write {
// message.readed = true
// }
//
// markAsReadMessage(message, failureHandler: nil) { success in
// if success {
// println("appear Mark message \(messageID) as read")
// }
// }
// }
// }
// }
// }
if message.readed {
return
}
private func batchMarkMessagesAsReaded(needUpdateAllMessages needUpdateAllMessages: Bool = false) {
//
if let _ = conversation.withFriend, recipient = conversation.recipient, latestMessage = messages.last {
if navigationController?.topViewController == self {
let messageID = message.messageID
dispatch_async(realmQueue) {
guard let realm = try? Realm() else {
return
}
if let message = messageWithMessageID(messageID, inRealm: realm) {
let _ = try? realm.write {
message.readed = true
}
markAsReadMessage(message, failureHandler: nil) { success in
if success {
println("appear Mark message \(messageID) as read")
if needUpdateAllMessages {
messages.forEach { message in
if !message.readed {
let _ = try? realm.write {
message.readed = true
}
}
}
} else {
let _ = try? realm.write {
latestMessage.readed = true
}
}
batchMarkAsReadOfMessagesToRecipient(recipient, beforeMessage: latestMessage, failureHandler: nil, completion: {
println("batchMarkAsReadOfMessagesToRecipient OK")
})
}
}
@@ -2425,7 +2467,9 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
if sender.friendState != UserFriendState.Me.rawValue { // from Friend
markMessageAsReaded(message)
if !message.readed {
batchMarkMessagesAsReaded()
}
switch message.mediaType {