@ -57,6 +57,17 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    Whisper . ConversationTitleView  =  Whisper . View . extend ( { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        templateName :  'conversation-title' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        render _attributes :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                verified :  this . model . isVerified ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                name :  this . model . getName ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                number :  this . model . getNumber ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    Whisper . ConversationView  =  Whisper . View . extend ( { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        className :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  [  'conversation' ,  this . model . get ( 'type' )  ] . join ( ' ' ) ; 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -68,13 +79,11 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        render _attributes :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                group :  this . model . get ( 'type' )  ===  'group' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                name :  this . model . getName ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                number :  this . model . getNumber ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                avatar :  this . model . getAvatar ( ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                expireTimer :  this . model . get ( 'expireTimer' ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                ' view-members'    :  i18n ( 'm  embers') , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                ' show-members'    :  i18n ( 'showM  embers') , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                'end-session'      :  i18n ( 'resetSession' ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                'show-identity'  :  i18n ( 'showSafetyNumber' ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                'show-identity'     :  i18n ( 'showSafetyNumber' ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                'destroy'          :  i18n ( 'deleteMessages' ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                'send-message'     :  i18n ( 'sendMessage' ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                'disappearing-messages' :  i18n ( 'disappearingMessages' ) , 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -84,6 +93,7 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        initialize :  function ( options )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . listenTo ( this . model ,  'destroy' ,  this . stopListening ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . listenTo ( this . model ,  'change' ,  this . updateTitle ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . listenTo ( this . model ,  'change:color' ,  this . updateColor ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . listenTo ( this . model ,  'change:name' ,  this . updateTitle ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . listenTo ( this . model ,  'newmessage' ,  this . addMessage ) ; 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -103,6 +113,13 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                window :  this . window 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . titleView  =  new  Whisper . ConversationTitleView ( { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                el :  this . $ ( '.conversation-title' ) , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                model :  this . model 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . titleView . render ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . titleView . render ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . view  =  new  Whisper . MessageListView ( { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                collection :  this . model . messageCollection , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                window :  this . window 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -145,7 +162,7 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click .leave-group' :  'leaveGroup' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click .update-group' :  'newGroupUpdate' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click .show-identity' :  'showIdentity' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click . view-members':  'vie  wMembers', 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click . show-members':  'sho  wMembers', 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click .conversation-menu .hamburger' :  'toggleMenu' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click .openInbox'  :  'openInbox' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'click'  :  'onClick' , 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -167,6 +184,10 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'force-resize' :  'forceUpdateMessageFieldSize' , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            'show-identity' :  'showIdentity' 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        updateTitle :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . titleView . render ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        enableDisappearingMessages :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            if  ( ! this . model . get ( 'expireTimer' ) )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . model . updateExpirationTimer ( 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -416,9 +437,12 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . model . messageCollection . add ( message ,  { merge :  true } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        vie wMembers:  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        sho wMembers:  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  this . model . fetchContacts ( ) . then ( function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                var  view  =  new  Whisper . GroupMemberList ( {  model :  this . model  } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                var  view  =  new  Whisper . GroupMemberList ( { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    model :  this . model , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                    listenBack :  this . listenBack . bind ( this ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . listenBack ( view ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } . bind ( this ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -515,16 +539,25 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        listenBack :  function ( view )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . panel  =  view ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . $ ( '.main.panel, .header-buttons.right' ) . hide ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . $ ( '.back' ) . show ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            view . $el . insertBefore ( this . $ ( '.panel' ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . panels  =  this . panels  ||  [ ] ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . panels . unshift ( view ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            if  ( this . panels . length  ===  1 )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . $ ( '.main.panel, .header-buttons.right' ) . hide ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . $ ( '.back' ) . show ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            view . $el . insertBefore ( this . $ ( '.panel' ) . first ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        resetPanel :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . panel . remove ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . $ ( '.main.panel, .header-buttons.right' ) . show ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . $ ( '.back' ) . hide ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . $el . trigger ( 'force-resize' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            var  view  =  this . panels . shift ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            view . remove ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            if  ( this . panels . length  ===  0 )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . $ ( '.main.panel, .header-buttons.right' ) . show ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . $ ( '.back' ) . hide ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                this . $el . trigger ( 'force-resize' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        closeMenu :  function ( e )  { 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -614,10 +647,6 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        updateTitle :  function ( )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            this . $ ( '.conversation-title' ) . text ( this . model . getTitle ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        updateColor :  function ( model ,  color )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            var  header  =  this . $ ( '.conversation-header' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            header . removeClass ( Whisper . Conversation . COLORS ) ;