@ -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 ) ;