@ -859,8 +859,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				      return  false ; 
 
		
	
		
			
				    } 
 
		
	
		
			
				
 
		
	
		
			
				    // NOTE: We don' mind if the message is the same, we still want to update the conversation because we want to show visible control messages we receive an ExpirationTimerUpdate
 
 
		
	
		
			
				    // Compare mode and timestamp
 
 
		
	
		
			
				    if  ( 
 
		
	
		
			
				      isEqual ( expirationMode ,  this . getExpirationMode ( ) )  && 
 
		
	
		
			
				      isEqual ( expireTimer ,  this . getExpireTimer ( ) ) 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -899,8 +897,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				    let  message : MessageModel  |  undefined  =  existingMessage  ||  undefined ; 
 
		
	
		
			
				    const  expirationType  =  changeToDisappearingMessageType ( this ,  expireTimer ,  expirationMode ) ; 
 
		
	
		
			
				
 
		
	
		
			
				    // we don't have info about who made the change and when, when we get a change from a config message, so do not add a control message
 
 
		
	
		
			
				    // TODO NOTE We might not show it in the UI but still need to process it using the sentTimestamp as the lastChange timestamp for config messages
 
 
		
	
		
			
				    const  commonAttributes  =  { 
 
		
	
		
			
				      flags : SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE , 
 
		
	
		
			
				      expirationTimerUpdate :  { 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -923,8 +919,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				      }  else  { 
 
		
	
		
			
				        message  =  await  this . addSingleIncomingMessage ( { 
 
		
	
		
			
				          . . . commonAttributes , 
 
		
	
		
			
				          // Even though this isn't reflected to the user, we want to place the last seen
 
 
		
	
		
			
				          //   indicator above it. We set it to 'unread' to trigger that placement.
 
 
		
	
		
			
				          // Even though this isn't reflected to the user, we want to place the last seen indicator above it. We set it to 'unread' to trigger that placement.
 
 
		
	
		
			
				          unread : READ_MESSAGE_STATE.unread , 
 
		
	
		
			
				          source , 
 
		
	
		
			
				          sent_at : timestamp , 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -977,7 +972,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				    } ; 
 
		
	
		
			
				
 
		
	
		
			
				    if  ( this . isMe ( ) )  { 
 
		
	
		
			
				      // TODO Check that the args are correct
 
 
		
	
		
			
				      if  ( expireUpdate . expirationType  ===  'deleteAfterRead' )  { 
 
		
	
		
			
				        window . log . info ( 'Note to Self messages cannot be delete after read!' ) ; 
 
		
	
		
			
				        return  true ; 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -985,11 +979,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				
 
		
	
		
			
				      const  expirationTimerMessage  =  new  ExpirationTimerUpdateMessage ( expireUpdate ) ; 
 
		
	
		
			
				
 
		
	
		
			
				      // window.log.debug(
 
 
		
	
		
			
				      //   `WIP: updateExpireTimer() isMe() expirationTimerMessage`,
 
 
		
	
		
			
				      //   JSON.stringify(expirationTimerMessage)
 
 
		
	
		
			
				      // );
 
 
		
	
		
			
				
 
		
	
		
			
				      await  message ? . sendSyncMessageOnly ( expirationTimerMessage ) ; 
 
		
	
		
			
				      return  true ; 
 
		
	
		
			
				    } 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -997,11 +986,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				    if  ( this . isPrivate ( ) )  { 
 
		
	
		
			
				      const  expirationTimerMessage  =  new  ExpirationTimerUpdateMessage ( expireUpdate ) ; 
 
		
	
		
			
				
 
		
	
		
			
				      // window.log.debug(
 
 
		
	
		
			
				      //   `WIP: updateExpireTimer() isPrivate() expirationTimerMessage`,
 
 
		
	
		
			
				      //   JSON.stringify(expirationTimerMessage)
 
 
		
	
		
			
				      // );
 
 
		
	
		
			
				
 
		
	
		
			
				      const  pubkey  =  new  PubKey ( this . get ( 'id' ) ) ; 
 
		
	
		
			
				      await  getMessageQueue ( ) . sendToPubKey ( 
 
		
	
		
			
				        pubkey , 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -1018,11 +1002,6 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				
 
		
	
		
			
				      const  expirationTimerMessage  =  new  ExpirationTimerUpdateMessage ( expireUpdateForGroup ) ; 
 
		
	
		
			
				
 
		
	
		
			
				      // window.log.debug(
 
 
		
	
		
			
				      //   `WIP: updateExpireTimer() isClosedGroup() expirationTimerMessage`,
 
 
		
	
		
			
				      //   JSON.stringify(expirationTimerMessage)
 
 
		
	
		
			
				      // );
 
 
		
	
		
			
				
 
		
	
		
			
				      await  getMessageQueue ( ) . sendToGroup ( { 
 
		
	
		
			
				        message : expirationTimerMessage , 
 
		
	
		
			
				        namespace :  SnodeNamespaces . ClosedGroupMessage , 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -1895,8 +1874,8 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				
 
		
	
		
			
				      if  ( this . isPrivate ( ) )  { 
 
		
	
		
			
				        if  ( this . isMe ( ) )  { 
 
		
	
		
			
				          if  ( this . i sDisappearingMode( 'deleteAfterRead' ) )  { 
 
		
	
		
			
				            ; 
 
		
	
		
			
				          if  ( this . matche sDisappearingMode( 'deleteAfterRead' ) )  { 
 
		
	
		
			
				            th row n  ew Error ( 'No  te to Self disappearing messages m ust be deleteAte rSe nd')  ; 
 
		
	
		
			
				          } 
 
		
	
		
			
				          chatMessageParams . syncTarget  =  this . id ; 
 
		
	
		
			
				          const  chatMessageMe  =  new  VisibleMessage ( chatMessageParams ) ; 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -1936,8 +1915,8 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				      } 
 
		
	
		
			
				
 
		
	
		
			
				      if  ( this . isClosedGroup ( ) )  { 
 
		
	
		
			
				        if  ( this . i sDisappearingMode( 'deleteAfterRead' ) )  { 
 
		
	
		
			
				          return ; 
 
		
	
		
			
				        if  ( this . matche sDisappearingMode( 'deleteAfterRead' ) )  { 
 
		
	
		
			
				          throw new  Error ( 'Group disappearing messages must be deleteAterSend' )  ; 
 
		
	
		
			
				        } 
 
		
	
		
			
				        const  chatMessageMediumGroup  =  new  VisibleMessage ( chatMessageParams ) ; 
 
		
	
		
			
				        const  closedGroupVisibleMessage  =  new  ClosedGroupVisibleMessage ( { 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -2085,8 +2064,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				    const  readDetails  =  [ ] ; 
 
		
	
		
			
				    // eslint-disable-next-line no-restricted-syntax
 
 
		
	
		
			
				    for  ( const  nowRead  of  oldUnreadNowRead )  { 
 
		
	
		
			
				      // eslint-disable-next-line no-await-in-loop
 
 
		
	
		
			
				      await  nowRead . markMessageReadNoCommit ( readAt ) ; 
 
		
	
		
			
				      nowRead . markMessageReadNoCommit ( readAt ) ; 
 
		
	
		
			
				
 
		
	
		
			
				      const  validTimestamp  =  nowRead . get ( 'sent_at' )  ||  nowRead . get ( 'serverTimestamp' ) ; 
 
		
	
		
			
				      if  ( nowRead . get ( 'source' )  &&  validTimestamp  &&  isFinite ( validTimestamp ) )  { 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -2365,7 +2343,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
 
		
	
		
			
				    return  [ ] ; 
 
		
	
		
			
				  } 
 
		
	
		
			
				
 
		
	
		
			
				  private  i sDisappearingMode( mode : DisappearingMessageConversationModeType )  { 
 
		
	
		
			
				  private  matche sDisappearingMode( mode : DisappearingMessageConversationModeType )  { 
 
		
	
		
			
				    const  success  = 
 
		
	
		
			
				      mode  ===  'deleteAfterRead' 
 
		
	
		
			
				        ?  this . getExpirationMode ( )  ===  'deleteAfterRead'