Clear existing key transparency data.

This commit is contained in:
Michelle Tang
2026-04-21 11:29:23 -04:00
committed by Alex Hart
parent 9fa587b7e4
commit 92927ec69b
4 changed files with 46 additions and 1 deletions
@@ -75,6 +75,7 @@ class AdvancedPrivacySettingsViewModel(
viewModelScope.launch(SignalDispatchers.IO) {
if (!enabled) {
SignalDatabase.recipients.clearAllKeyTransparencyData()
SignalStore.account.distinguishedHead = null
}
SignalDatabase.recipients.markNeedsSync(Recipient.self().id)
StorageSyncHelper.scheduleSyncForDataChange()
@@ -94,6 +94,7 @@ import org.thoughtcrime.securesms.migrations.RecheckPaymentsMigrationJob;
import org.thoughtcrime.securesms.migrations.ReleaseChannelRecipientFixMigrationJob;
import org.thoughtcrime.securesms.migrations.RecipientSearchMigrationJob;
import org.thoughtcrime.securesms.migrations.ResetArchiveTierMigrationJob;
import org.thoughtcrime.securesms.migrations.ResetKeyTransparencyMigrationJob;
import org.thoughtcrime.securesms.migrations.SelfRegisteredStateMigrationJob;
import org.thoughtcrime.securesms.migrations.StickerAdditionMigrationJob;
import org.thoughtcrime.securesms.migrations.StickerDayByDayMigrationJob;
@@ -351,6 +352,7 @@ public final class JobManagerFactories {
put(ReleaseChannelRecipientFixMigrationJob.KEY, new ReleaseChannelRecipientFixMigrationJob.Factory());
put(RecipientSearchMigrationJob.KEY, new RecipientSearchMigrationJob.Factory());
put(ResetArchiveTierMigrationJob.KEY, new ResetArchiveTierMigrationJob.Factory());
put(ResetKeyTransparencyMigrationJob.KEY, new ResetKeyTransparencyMigrationJob.Factory());
put(SelfRegisteredStateMigrationJob.KEY, new SelfRegisteredStateMigrationJob.Factory());
put(StickerLaunchMigrationJob.KEY, new StickerLaunchMigrationJob.Factory());
put(StickerAdditionMigrationJob.KEY, new StickerAdditionMigrationJob.Factory());
@@ -198,9 +198,10 @@ public class ApplicationMigrations {
static final int EMOJI_VERSION_13 = 154;
static final int COLLAPSED_EVENTS = 155;
static final int COLLAPSED_EVENTS_2 = 156;
static final int KEY_TRANSPARENCY = 157;
}
public static final int CURRENT_VERSION = 156;
public static final int CURRENT_VERSION = 157;
/**
* This *must* be called after the {@link JobManager} has been instantiated, but *before* the call
@@ -919,6 +920,10 @@ public class ApplicationMigrations {
jobs.put(Version.COLLAPSED_EVENTS_2, new BackfillCollapsedEventsMigrationJob());
}
if (lastSeenVersion < Version.KEY_TRANSPARENCY) {
jobs.put(Version.KEY_TRANSPARENCY, new ResetKeyTransparencyMigrationJob());
}
return jobs;
}
@@ -0,0 +1,37 @@
package org.thoughtcrime.securesms.migrations
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobs.CheckKeyTransparencyJob
import org.thoughtcrime.securesms.keyvalue.SignalStore
/**
* Clears all existing key transparency data
*/
internal class ResetKeyTransparencyMigrationJob private constructor(parameters: Parameters) : MigrationJob(parameters) {
companion object {
const val KEY = "ResetKeyTransparencyMigrationJob"
}
internal constructor() : this(Parameters.Builder().build())
override fun isUiBlocking(): Boolean = false
override fun getFactoryKey(): String = KEY
override fun performMigration() {
SignalStore.account.distinguishedHead = null
SignalStore.misc.lastKeyTransparencyTime = 0
SignalDatabase.recipients.clearAllKeyTransparencyData()
CheckKeyTransparencyJob.enqueueIfNecessary(addDelay = false)
}
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<ResetKeyTransparencyMigrationJob> {
override fun create(parameters: Parameters, serializedData: ByteArray?): ResetKeyTransparencyMigrationJob {
return ResetKeyTransparencyMigrationJob(parameters)
}
}
}