From 4f1aa34a465e65beb86033a0a79a11078e8f0ff2 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 18 Feb 2022 23:03:24 -0500 Subject: [PATCH] Address issues with PNI app migration. --- .../org/thoughtcrime/securesms/keyvalue/AccountValues.kt | 4 ++++ .../securesms/migrations/ApplicationMigrations.java | 7 ++++++- .../migrations/PniAccountInitializationMigrationJob.java | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt index d0cba9feb..980d403a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt @@ -162,6 +162,10 @@ internal class AccountValues internal constructor(store: KeyValueStore) : Signal .commit() } + fun hasPniIdentityKey(): Boolean { + return store.containsKey(KEY_PNI_IDENTITY_PUBLIC_KEY) + } + /** Generates and saves an identity key pair for the PNI identity. Should only be done once. */ fun generatePniIdentityKey() { Log.i(TAG, "Generating a new PNI identity key pair.") diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/ApplicationMigrations.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/ApplicationMigrations.java index d2bab6311..da946ae3c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/ApplicationMigrations.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/ApplicationMigrations.java @@ -98,9 +98,10 @@ public class ApplicationMigrations { static final int CHANGE_NUMBER_CAPABILITY_4 = 54; static final int KBS_MIGRATION = 55; static final int PNI_IDENTITY = 56; + static final int PNI_IDENTITY_2 = 57; } - public static final int CURRENT_VERSION = 56; + public static final int CURRENT_VERSION = 57; /** * This *must* be called after the {@link JobManager} has been instantiated, but *before* the call @@ -426,6 +427,10 @@ public class ApplicationMigrations { jobs.put(Version.PNI_IDENTITY, new PniAccountInitializationMigrationJob()); } + if (lastSeenVersion < Version.PNI_IDENTITY_2) { + jobs.put(Version.PNI_IDENTITY_2, new PniAccountInitializationMigrationJob()); + } + return jobs; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/PniAccountInitializationMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/PniAccountInitializationMigrationJob.java index ab0d3afe2..6bb46eb03 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/PniAccountInitializationMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/PniAccountInitializationMigrationJob.java @@ -63,6 +63,11 @@ public class PniAccountInitializationMigrationJob extends MigrationJob { return; } + if (SignalStore.account().hasPniIdentityKey()) { + Log.w(TAG, "Already generated the PNI identity. Skipping."); + return; + } + SignalStore.account().generatePniIdentityKey(); SignalServiceAccountManager accountManager = ApplicationDependencies.getSignalServiceAccountManager();