]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java
Implement message expiration timer version
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / SyncHelper.java
index ecaf76058beca397ebd8b40c228da93554abdbab..56665fda870c73edbac42287d21ba437312b4330 100644 (file)
@@ -239,7 +239,7 @@ public class SyncHelper {
                 Optional.ofNullable(verifiedMessage),
                 Optional.ofNullable(profileKey),
                 Optional.ofNullable(contact == null ? null : contact.messageExpirationTime()),
-                Optional.empty(),
+                Optional.ofNullable(contact == null ? null : contact.messageExpirationTimeVersion()),
                 Optional.empty(),
                 contact != null && contact.isArchived());
     }
@@ -392,7 +392,18 @@ public class SyncHelper {
                                 TrustLevel.fromVerifiedState(verifiedMessage.getVerified()));
             }
             if (c.getExpirationTimer().isPresent()) {
-                builder.withMessageExpirationTime(c.getExpirationTimer().get());
+                if (c.getExpirationTimerVersion().isPresent() && (
+                        contact == null || c.getExpirationTimerVersion().get() > contact.messageExpirationTimeVersion()
+                )) {
+                    builder.withMessageExpirationTime(c.getExpirationTimer().get());
+                    builder.withMessageExpirationTimeVersion(c.getExpirationTimerVersion().get());
+                } else {
+                    logger.debug(
+                            "[ContactSync] {} was synced with an old expiration timer. Ignoring. Received: {} Current: ${}",
+                            recipientId,
+                            c.getExpirationTimerVersion(),
+                            contact == null ? 1 : contact.messageExpirationTimeVersion());
+                }
             }
             builder.withIsArchived(c.isArchived());
             account.getContactStore().storeContact(recipientId, builder.build());