]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/ProfileHelper.java
Archive old sessions when an identity key has changed
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / ProfileHelper.java
index 20a81f7f66fc1b630a6455e884e35f03ee9c81e3..f1f5d1de875e99b1aae99dd6351dfe4807c85a12 100644 (file)
@@ -279,25 +279,18 @@ public final class ProfileHelper {
                         .build();
             }
 
-            logger.trace("Storing profile");
-            account.getProfileStore().storeProfile(recipientId, newProfile);
-
             try {
                 logger.trace("Storing identity");
-                var newIdentity = account.getIdentityKeyStore()
-                        .saveIdentity(recipientId,
-                                new IdentityKey(Base64.getDecoder().decode(encryptedProfile.getIdentityKey())),
-                                new Date());
-
-                if (newIdentity) {
-                    logger.trace("Archiving old sessions");
-                    account.getSessionStore().archiveSessions(recipientId);
-                    account.getSenderKeyStore().deleteSharedWith(recipientId);
-                }
+                final var identityKey = new IdentityKey(Base64.getDecoder().decode(encryptedProfile.getIdentityKey()));
+                account.getIdentityKeyStore().saveIdentity(recipientId, identityKey, new Date());
             } catch (InvalidKeyException ignored) {
                 logger.warn("Got invalid identity key in profile for {}",
                         context.getRecipientHelper().resolveSignalServiceAddress(recipientId).getIdentifier());
             }
+
+            logger.trace("Storing profile");
+            account.getProfileStore().storeProfile(recipientId, newProfile);
+
             logger.trace("Done handling retrieved profile");
         }).doOnError(e -> {
             logger.warn("Failed to retrieve profile, ignoring: {}", e.getMessage());