mirror of
https://github.com/wahyd4/Yep.git
synced 2026-08-12 06:16:09 +10:00
add messagesInConversation for ordered messages
This commit is contained in:
@@ -185,4 +185,9 @@ func tryGetOrCreateMe() -> User? {
|
||||
return nil
|
||||
}
|
||||
|
||||
func messagesInConversation(conversation: Conversation) -> RLMResults {
|
||||
let predicate = NSPredicate(format: "conversation = %@", conversation)
|
||||
let messages = Message.objectsWithPredicate(predicate).sortedResultsUsingProperty("createdAt", ascending: true)
|
||||
return messages
|
||||
}
|
||||
|
||||
|
||||
@@ -7,11 +7,15 @@
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import Realm
|
||||
|
||||
class ConversationViewController: UIViewController {
|
||||
|
||||
var conversation: Conversation!
|
||||
|
||||
|
||||
lazy var messages: RLMResults = {
|
||||
return messagesInConversation(self.conversation)
|
||||
}()
|
||||
|
||||
@IBOutlet weak var conversationCollectionView: UICollectionView!
|
||||
|
||||
@@ -174,7 +178,7 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
|
||||
|
||||
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
|
||||
|
||||
let message = conversation.messages[indexPath.row]
|
||||
let message = messages.objectAtIndex(UInt(indexPath.row)) as! Message
|
||||
|
||||
if let sender = message.fromFriend {
|
||||
if sender.friendState != UserFriendState.Me.rawValue {
|
||||
@@ -220,7 +224,7 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
|
||||
|
||||
// TODO: 缓存 Cell 高度才是正道
|
||||
// TODO: 不使用魔法数字
|
||||
let message = conversation.messages[indexPath.row]
|
||||
let message = messages.objectAtIndex(UInt(indexPath.row)) as! Message
|
||||
|
||||
let rect = message.textContent.boundingRectWithSize(CGSize(width: messageTextLabelMaxWidth, height: CGFloat(FLT_MAX)), options: .UsesLineFragmentOrigin | .UsesFontLeading, attributes: messageTextAttributes, context: nil)
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class ConversationCell: UITableViewCell {
|
||||
}
|
||||
}
|
||||
|
||||
if let latestMessage = conversation.messages.last {
|
||||
if let latestMessage = messagesInConversation(conversation).lastObject() as? Message {
|
||||
self.chatLabel.text = latestMessage.textContent
|
||||
self.timeAgoLabel.text = "\(latestMessage.createdAt)"
|
||||
} else {
|
||||
@@ -59,7 +59,7 @@ class ConversationCell: UITableViewCell {
|
||||
self.nameLabel.text = ""
|
||||
}
|
||||
|
||||
if let latestMessage = conversation.messages.last {
|
||||
if let latestMessage = messagesInConversation(conversation).lastObject() as? Message {
|
||||
if let messageSender = latestMessage.fromFriend {
|
||||
AvatarCache.sharedInstance.roundAvatarOfUser(messageSender, withRadius: radius) { roundImage in
|
||||
dispatch_async(dispatch_get_main_queue()) {
|
||||
|
||||
Reference in New Issue
Block a user