From 48a99a85c3025160856e2f81b88d49836b509530 Mon Sep 17 00:00:00 2001 From: charles Date: Thu, 15 Dec 2022 10:05:07 +1100 Subject: [PATCH] Legacy expiration type ui default tweaks --- .../expiration/ExpirationSettingsViewModel.kt | 17 +++++++++++++---- .../messages/ExpirationConfiguration.kt | 4 ++-- .../sending_receiving/ReceivedMessageHandler.kt | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModel.kt index acf7174237..bd3903a78d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModel.kt @@ -34,8 +34,8 @@ class ExpirationSettingsViewModel( private val _recipient = MutableStateFlow(null) val recipient: StateFlow = _recipient - private val _selectedExpirationType = MutableStateFlow(null) - val selectedExpirationType: StateFlow = _selectedExpirationType + private val _selectedExpirationType = MutableStateFlow(-1) + val selectedExpirationType: StateFlow = _selectedExpirationType private val _selectedExpirationTimer = MutableStateFlow(afterSendOptions.firstOrNull()) val selectedExpirationTimer: StateFlow = _selectedExpirationTimer @@ -52,7 +52,16 @@ class ExpirationSettingsViewModel( if (ExpirationConfiguration.isNewConfigEnabled && (recipient?.isLocalNumber == true || recipient?.isClosedGroupRecipient == true)) { _selectedExpirationType.value = ExpirationType.DELETE_AFTER_SEND.number } else { - _selectedExpirationType.value = expirationConfig?.expirationTypeValue + _selectedExpirationType.value = expirationConfig?.expirationTypeValue ?: -1 + } + _selectedExpirationType.value = if (ExpirationConfiguration.isNewConfigEnabled) { + if (recipient?.isLocalNumber == true || recipient?.isClosedGroupRecipient == true) { + ExpirationType.DELETE_AFTER_SEND.number + } else { + expirationConfig?.expirationTypeValue ?: -1 + } + } else { + expirationConfig?.expirationTypeValue?.let { 0 /* Legacy */ } ?: -1 } _selectedExpirationTimer.value = when(expirationConfig?.expirationType) { ExpirationType.DELETE_AFTER_SEND -> afterSendOptions.find { it.value.toIntOrNull() == expirationConfig?.durationSeconds } @@ -76,7 +85,7 @@ class ExpirationSettingsViewModel( } fun onExpirationTypeSelected(option: RadioOption) { - _selectedExpirationType.value = option.value.toIntOrNull() + _selectedExpirationType.value = option.value.toIntOrNull() ?: -1 } fun onExpirationTimerSelected(option: RadioOption) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/ExpirationConfiguration.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/ExpirationConfiguration.kt index 527628905c..5ee5b8f88d 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/ExpirationConfiguration.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/ExpirationConfiguration.kt @@ -5,11 +5,11 @@ import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType class ExpirationConfiguration( val threadId: Long = -1, val durationSeconds: Int = 0, - val expirationTypeValue: Int? = null, + val expirationTypeValue: Int = -1, val updatedTimestampMs: Long = 0 ) { val isEnabled = durationSeconds > 0 - val expirationType = expirationTypeValue?.let { ExpirationType.valueOf(it) } + val expirationType: ExpirationType? = ExpirationType.valueOf(expirationTypeValue) companion object { val isNewConfigEnabled = System.currentTimeMillis() > 1_674_000_000_000 // 18/01/2023 diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt index c883e28c34..2855df7690 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt @@ -98,7 +98,7 @@ fun updateExpirationConfigurationIfNeeded(message: Message, proto: SignalService val remoteConfig = ExpirationConfiguration( threadID, durationSeconds, - type?.number, + type?.number ?: -1, proto.lastDisappearingMessageChangeTimestamp ) storage.setExpirationConfiguration(remoteConfig)