|  |  |  | @ -20,6 +20,7 @@ import org.session.libsession.utilities.SSKEnvironment.MessageExpirationManagerP | 
		
	
		
			
				|  |  |  |  | import org.session.libsession.utilities.TextSecurePreferences | 
		
	
		
			
				|  |  |  |  | import org.session.libsession.utilities.recipients.Recipient | 
		
	
		
			
				|  |  |  |  | import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.database.GroupDatabase | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.database.Storage | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.database.ThreadDatabase | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.preferences.RadioOption | 
		
	
	
		
			
				
					|  |  |  | @ -31,6 +32,7 @@ class ExpirationSettingsViewModel( | 
		
	
		
			
				|  |  |  |  |     private val textSecurePreferences: TextSecurePreferences, | 
		
	
		
			
				|  |  |  |  |     private val messageExpirationManager: MessageExpirationManagerProtocol, | 
		
	
		
			
				|  |  |  |  |     private val threadDb: ThreadDatabase, | 
		
	
		
			
				|  |  |  |  |     private val groupDb: GroupDatabase, | 
		
	
		
			
				|  |  |  |  |     private val storage: Storage | 
		
	
		
			
				|  |  |  |  | ) : ViewModel() { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -56,8 +58,14 @@ class ExpirationSettingsViewModel( | 
		
	
		
			
				|  |  |  |  |             expirationConfig = storage.getExpirationConfiguration(threadId) | 
		
	
		
			
				|  |  |  |  |             val recipient = threadDb.getRecipientForThreadId(threadId) | 
		
	
		
			
				|  |  |  |  |             _recipient.value = recipient | 
		
	
		
			
				|  |  |  |  |             _uiState.update { | 
		
	
		
			
				|  |  |  |  |                 it.copy(showExpirationTypeSelector = !ExpirationConfiguration.isNewConfigEnabled || (recipient?.isContactRecipient == true && !recipient.isLocalNumber)) | 
		
	
		
			
				|  |  |  |  |             val groupInfo = if (recipient?.isClosedGroupRecipient == true) { | 
		
	
		
			
				|  |  |  |  |                 groupDb.getGroup(recipient.address.toGroupString()).orNull() | 
		
	
		
			
				|  |  |  |  |             } else null | 
		
	
		
			
				|  |  |  |  |             _uiState.update { currentUiState -> | 
		
	
		
			
				|  |  |  |  |                 currentUiState.copy( | 
		
	
		
			
				|  |  |  |  |                     isSelfAdmin = groupInfo?.admins?.any{ it.serialize() == textSecurePreferences.getLocalNumber() } == true, | 
		
	
		
			
				|  |  |  |  |                     showExpirationTypeSelector = !ExpirationConfiguration.isNewConfigEnabled || (recipient?.isContactRecipient == true && !recipient.isLocalNumber) | 
		
	
		
			
				|  |  |  |  |                 ) | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             _selectedExpirationType.value = if (ExpirationConfiguration.isNewConfigEnabled) { | 
		
	
		
			
				|  |  |  |  |                 if (recipient?.isLocalNumber == true || recipient?.isClosedGroupRecipient == true) { | 
		
	
	
		
			
				
					|  |  |  | @ -82,9 +90,9 @@ class ExpirationSettingsViewModel( | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         }.onEach { options -> | 
		
	
		
			
				|  |  |  |  |             _expirationTimerOptions.value = if (ExpirationConfiguration.isNewConfigEnabled && (recipient.value?.isLocalNumber == true || recipient.value?.isClosedGroupRecipient == true)) { | 
		
	
		
			
				|  |  |  |  |                 options | 
		
	
		
			
				|  |  |  |  |                 options.map { it.copy(enabled = _uiState.value.isSelfAdmin) } | 
		
	
		
			
				|  |  |  |  |             } else { | 
		
	
		
			
				|  |  |  |  |                 options.slice(1 until options.size) | 
		
	
		
			
				|  |  |  |  |                 options.slice(1 until options.size).map { it.copy(enabled = _uiState.value.isSelfAdmin) } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         }.launchIn(viewModelScope) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
	
		
			
				
					|  |  |  | @ -141,6 +149,7 @@ class ExpirationSettingsViewModel( | 
		
	
		
			
				|  |  |  |  |         private val textSecurePreferences: TextSecurePreferences, | 
		
	
		
			
				|  |  |  |  |         private val messageExpirationManager: MessageExpirationManagerProtocol, | 
		
	
		
			
				|  |  |  |  |         private val threadDb: ThreadDatabase, | 
		
	
		
			
				|  |  |  |  |         private val groupDb: GroupDatabase, | 
		
	
		
			
				|  |  |  |  |         private val storage: Storage | 
		
	
		
			
				|  |  |  |  |     ) : ViewModelProvider.Factory { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -152,6 +161,7 @@ class ExpirationSettingsViewModel( | 
		
	
		
			
				|  |  |  |  |                 textSecurePreferences, | 
		
	
		
			
				|  |  |  |  |                 messageExpirationManager, | 
		
	
		
			
				|  |  |  |  |                 threadDb, | 
		
	
		
			
				|  |  |  |  |                 groupDb, | 
		
	
		
			
				|  |  |  |  |                 storage | 
		
	
		
			
				|  |  |  |  |             ) as T | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
	
		
			
				
					|  |  |  | @ -159,6 +169,7 @@ class ExpirationSettingsViewModel( | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | data class ExpirationSettingsUiState( | 
		
	
		
			
				|  |  |  |  |     val isSelfAdmin: Boolean = false, | 
		
	
		
			
				|  |  |  |  |     val showExpirationTypeSelector: Boolean = false, | 
		
	
		
			
				|  |  |  |  |     val settingsSaved: Boolean? = null | 
		
	
		
			
				|  |  |  |  | ) | 
		
	
	
		
			
				
					|  |  |  | 
 |