diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt index facadb977..9f692c6f4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -1791,7 +1791,9 @@ open class Storage( val recipientDb = DatabaseComponent.get(context).recipientDatabase() recipientDb.setDisappearingState(recipient, disappearingState); val currentLegacyRecipient = lokiDb.getLastLegacySenderAddress(recipientAddress) + val currentExpiry = getExpirationConfiguration(threadID) if (disappearingState == DisappearingState.LEGACY + && currentExpiry?.isEnabled == true && ExpirationConfiguration.isNewConfigEnabled) { // only set "this person is legacy" if new config enabled lokiDb.setLastLegacySenderAddress(recipientAddress, messageSender) } else if (messageSender == currentLegacyRecipient) { 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 cc48b21ce..29f02845c 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 @@ -283,12 +283,19 @@ fun MessageReceiver.updateExpiryIfNeeded( val storage = MessagingModuleConfiguration.shared.storage val sentTime = message.sentTimestamp ?: throw MessageReceiver.Error.InvalidMessage - if (!proto.hasLastDisappearingMessageChangeTimestamp()) return + val threadID = storage.getThreadIdFor(message.sender!!, message.groupPublicKey, openGroupID, false) ?: throw MessageReceiver.Error.NoThread val recipient = storage.getRecipientForThread(threadID) ?: throw MessageReceiver.Error.NoThread + if (!recipient.isLocalNumber) { + val disappearingState = if (proto.hasExpirationType()) Recipient.DisappearingState.UPDATED else Recipient.DisappearingState.LEGACY + storage.updateDisappearingState(message.sender!!, threadID, disappearingState) + } + + if (!proto.hasLastDisappearingMessageChangeTimestamp()) return + val localConfig = storage.getExpirationConfiguration(threadID) val durationSeconds = if (proto.hasExpirationTimer()) proto.expirationTimer else 0 @@ -305,11 +312,6 @@ fun MessageReceiver.updateExpiryIfNeeded( // don't update any values for open groups if (recipient.isOpenGroupRecipient && type != null) throw MessageReceiver.Error.InvalidMessage - if (!recipient.isGroupRecipient && !recipient.isLocalNumber) { - val disappearingState = if (proto.hasExpirationType()) Recipient.DisappearingState.UPDATED else Recipient.DisappearingState.LEGACY - storage.updateDisappearingState(message.sender!!, threadID, disappearingState) - } - remoteConfig.takeIf { localConfig == null || it.updatedTimestampMs > localConfig.updatedTimestampMs } ?.let(storage::setExpirationConfiguration)