mirror of
https://github.com/wahyd4/Yep.git
synced 2026-08-15 15:55:59 +10:00
add batchMarkMessagesAsReaded use in Conversation
This commit is contained in:
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user