You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
| /*
 | |
|  * vim: ts=4:sw=4:expandtab
 | |
|  */
 | |
| ;(function() {
 | |
|     'use strict';
 | |
|     window.Whisper = window.Whisper || {};
 | |
|     Whisper.ReadReceipts = new (Backbone.Collection.extend({
 | |
|         forMessage: function(message) {
 | |
|             var receipt = this.findWhere({
 | |
|                 sender: message.get('source'),
 | |
|                 timestamp: message.get('sent_at')
 | |
|             });
 | |
|             if (receipt) {
 | |
|                 console.log('Found early read receipt for message');
 | |
|                 this.remove(receipt);
 | |
|                 return receipt;
 | |
|             }
 | |
|         },
 | |
|         onReceipt: function(receipt) {
 | |
|             var messages  = new Whisper.MessageCollection();
 | |
|             return messages.fetchSentAt(receipt.get('timestamp')).then(function() {
 | |
|                 var message = messages.find(function(message) {
 | |
|                     return (message.isIncoming() && message.isUnread() &&
 | |
|                             message.get('source') === receipt.get('sender'));
 | |
|                 });
 | |
|                 if (message) {
 | |
|                     return message.markRead(receipt.get('read_at')).then(function() {
 | |
|                         this.notifyConversation(message);
 | |
|                         this.remove(receipt);
 | |
|                     }.bind(this));
 | |
|                 } else {
 | |
|                     console.log(
 | |
|                         'No message for read receipt',
 | |
|                         receipt.get('sender'), receipt.get('timestamp')
 | |
|                     );
 | |
|                 }
 | |
|             }.bind(this));
 | |
|         },
 | |
|         notifyConversation: function(message) {
 | |
|             var conversation = ConversationController.get({
 | |
|                 id: message.get('conversationId')
 | |
|             });
 | |
| 
 | |
|             if (conversation) {
 | |
|                 conversation.onReadMessage(message);
 | |
|             }
 | |
|         },
 | |
|     }))();
 | |
| })();
 |