@ -10,22 +10,34 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    window . Whisper  =  window . Whisper  ||  { } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    var  conversations  =  new  Whisper . ConversationCollection ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    var  inboxCollection  =  new  ( Backbone . Collection . extend ( { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        initialize :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . on ( 'change:active_at' ,  this . sort ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . on ( 'change:unreadCount' ,  this . updateUnreadCount ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    window . inbox  =  new  Backbone . Collection ( [ ] ,  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . listenTo ( conversations ,  'add change:active_at' ,  this . addActive ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        comparator :  function ( model )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  - model . get ( 'active_at' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        addActive :  function ( model )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            if  ( model . get ( 'active_at' ) )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . add ( model ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        updateUnreadCount :  function ( model ,  count )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            var  prev  =  model . previous ( 'unreadCount' )  ||  0 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            if  ( count  <  prev )  {  // decreased
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                var  newUnreadCount  =  storage . get ( "unreadCount" ,  0 )  -  ( prev  -  count ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                setUnreadCount ( newUnreadCount ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                storage . put ( "unreadCount" ,  newUnreadCount ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ) )( )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    inbox . on ( 'change:active_at' ,  inbox . sort ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    inbox . on ( 'change:unreadCount' ,  function ( model ,  count )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        var  prev  =  model . previous ( 'unreadCount' )  ||  0 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( count  <  prev )  {  // decreased
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            var  newUnreadCount  =  storage . get ( "unreadCount" ,  0 )  -  ( prev  -  count ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            setUnreadCount ( newUnreadCount ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            storage . put ( "unreadCount" ,  newUnreadCount ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    window . getInboxCollection  =  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  inboxCollection ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    window . ConversationController  =  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        get :  function ( id )  { 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -33,9 +45,6 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        create :  function ( attrs )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            var  conversation  =  conversations . add ( attrs ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            if  ( conversation . get ( 'active_at' ) )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                inbox . add ( conversation ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  conversation ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        findOrCreatePrivateById :  function ( id )  { 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -55,11 +64,7 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        updateInbox :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversations . fetchActive ( ) . then ( function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                inbox . reset ( conversations . filter ( function ( model )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    return  model . get ( 'active_at' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                } ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversations . fetchActive ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -76,12 +81,16 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    window . notifyConversation  =  function ( message )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        var  conversationId  =  message . get ( 'conversationId' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        var  conversation  =  ConversationController . create ( { id :  conversationId } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        var  conversation  =  ConversationController . get ( conversationId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! conversation )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversation  =  conversations . create ( { id :  conversationId } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversation . fetch ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( inboxOpened )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversation . reload ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversation . fetchMessages ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            extension . windows . drawAttention ( inboxWindowId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        }  else  if  ( Whisper . Notifications . isEnabled ( ) )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            var  sender  =  conversations. add  ( { id :  message . get ( 'source' ) } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            var  sender  =  ConversationController. create  ( { id :  message . get ( 'source' ) } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversation . fetch ( ) . then ( function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                sender . fetch ( ) . then ( function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    var  notification  =  new  Notification ( sender . getTitle ( ) ,  { 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -94,9 +103,7 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversation . fetchMessages ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        }  else  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            conversation . reload ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            openConversation ( conversation ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            ConversationController . updateInbox ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        }