 
                 // TODO: 需要更好的下载与 mark as read 逻辑：也许未下载的也可以 mark as read
                 downloadAttachmentOfMessage(message)
+                
+                markMessageAsReaded(message)
 
                 switch message.mediaType {
                 case MessageMediaType.Image.rawValue:

    func removeSendStates() {

        var messageStates = statesOfConversation(self.conversation, MessageSendState.Successed.rawValue, nil, inRealm: self.realm)
        
        if let lastMessage = messageStates.last {
            
            println("Message \(lastMessage.refMessageID) count before send \(self.messages.count) \(self.displayedMessagesRange.length)")
            
            var sendStates = statesOfConversation(self.conversation, MessageSendState.Successed.rawValue, lastMessage.refMessageID, inRealm: self.realm)
            
            var indexPaths = [NSIndexPath]()
            
            for sendState in sendStates {
                if let indexInMessage = self.messages.indexOf(sendState) {
                    var reverseIndex = (self.messages.count - indexInMessage - 1)
                    var actuallIndexInCollectionView = self.displayedMessagesRange.length - reverseIndex
                    var newIndexPath = NSIndexPath(forItem: actuallIndexInCollectionView, inSection: 0)
                    indexPaths.append(newIndexPath)

    
    func updateMessagesStates() {

        self.delay(0.1) {

            self.removeSendStates()

