diff --git a/Yep/Realm/Models.swift b/Yep/Realm/Models.swift index f2485d2e..d01937c4 100644 --- a/Yep/Realm/Models.swift +++ b/Yep/Realm/Models.swift @@ -102,6 +102,12 @@ enum MessageMediaType: Int { case Audio = 3 } +enum MessageSendState: Int { + case NotSend = 0 + case Failed = 1 + case Successed = 2 +} + class Message: RLMObject { dynamic var messageID: String = "" @@ -117,6 +123,7 @@ class Message: RLMObject { dynamic var thumbnailURLString: String = "" dynamic var localThumbnailName: String = "" + dynamic var sendState: Int = MessageSendState.NotSend.rawValue dynamic var readed: Bool = false dynamic var fromFriend: User? diff --git a/Yep/Services/YepService.swift b/Yep/Services/YepService.swift index a9cbcda4..6420616b 100644 --- a/Yep/Services/YepService.swift +++ b/Yep/Services/YepService.swift @@ -601,6 +601,11 @@ func sendText(text: String, toRecipient recipientID: String, #recipientType: Str realm.commitWriteTransaction() + + // 发出之前就显示 Message + afterCreatedMessage(message) + + let messageInfo: JSONDictionary = [ "recipient_id": recipientID, "recipient_type": recipientType, @@ -613,13 +618,18 @@ func sendText(text: String, toRecipient recipientID: String, #recipientType: Str failureHandler(reason, errorMessage) } + dispatch_async(dispatch_get_main_queue()) { + realm.beginWriteTransaction() + message.sendState = MessageSendState.Failed.rawValue + realm.commitWriteTransaction() + } + }, completion: { messageID in dispatch_async(dispatch_get_main_queue()) { realm.beginWriteTransaction() message.messageID = messageID + message.sendState = MessageSendState.Successed.rawValue realm.commitWriteTransaction() - - afterCreatedMessage(message) } completion(success: true)