About Fix freeze

This commit is contained in:
kevinzhow
2015-10-22 01:13:24 +08:00
parent 5feb23d79f
commit d6a77f7da9
+30 -25
View File
@@ -724,33 +724,38 @@ var isFetchingUnreadMessages = Listenable<Bool>(false) { _ in }
func syncUnreadMessagesAndDoFurtherAction(furtherAction: (messageIDs: [String]) -> Void) {
dispatch_async(dispatch_get_main_queue()) {
isFetchingUnreadMessages.value = true
}
unreadMessages { allUnreadMessages in
//println("\n allUnreadMessages: \(allUnreadMessages)")
println("Got unread message: \(allUnreadMessages.count)")
dispatch_async(realmQueue) {
guard let realm = try? Realm() else {
return
}
var messageIDs = [String]()
for messageInfo in allUnreadMessages {
syncMessageWithMessageInfo(messageInfo, messageAge: .New, inRealm: realm) { _messageIDs in
messageIDs += _messageIDs
if isFetchingUnreadMessages.value {
return
}
isFetchingUnreadMessages.value = true
unreadMessages { allUnreadMessages in
//println("\n allUnreadMessages: \(allUnreadMessages)")
println("Got unread message: \(allUnreadMessages.count)")
dispatch_async(realmQueue) {
guard let realm = try? Realm() else {
return
}
var messageIDs = [String]()
for messageInfo in allUnreadMessages {
syncMessageWithMessageInfo(messageInfo, messageAge: .New, inRealm: realm) { _messageIDs in
messageIDs += _messageIDs
}
}
// do futher action
furtherAction(messageIDs: messageIDs)
dispatch_async(dispatch_get_main_queue()) {
isFetchingUnreadMessages.value = false
}
}
// do futher action
furtherAction(messageIDs: messageIDs)
dispatch_async(dispatch_get_main_queue()) {
isFetchingUnreadMessages.value = false
}
}
}