Add migration to fix FREE tier setting.

This commit is contained in:
Greyson Parrelli
2025-07-25 12:08:51 -04:00
committed by GitHub
parent e8bea19927
commit 00e740ee14
4 changed files with 60 additions and 1 deletions

View File

@@ -87,6 +87,7 @@ import org.thoughtcrime.securesms.migrations.ProfileSharingUpdateMigrationJob;
import org.thoughtcrime.securesms.migrations.RebuildMessageSearchIndexMigrationJob;
import org.thoughtcrime.securesms.migrations.RecheckPaymentsMigrationJob;
import org.thoughtcrime.securesms.migrations.RecipientSearchMigrationJob;
import org.thoughtcrime.securesms.migrations.ResetArchiveTierMigrationJob;
import org.thoughtcrime.securesms.migrations.SelfRegisteredStateMigrationJob;
import org.thoughtcrime.securesms.migrations.StickerAdditionMigrationJob;
import org.thoughtcrime.securesms.migrations.StickerDayByDayMigrationJob;
@@ -323,6 +324,7 @@ public final class JobManagerFactories {
put(RebuildMessageSearchIndexMigrationJob.KEY, new RebuildMessageSearchIndexMigrationJob.Factory());
put(RecheckPaymentsMigrationJob.KEY, new RecheckPaymentsMigrationJob.Factory());
put(RecipientSearchMigrationJob.KEY, new RecipientSearchMigrationJob.Factory());
put(ResetArchiveTierMigrationJob.KEY, new ResetArchiveTierMigrationJob.Factory());
put(SelfRegisteredStateMigrationJob.KEY, new SelfRegisteredStateMigrationJob.Factory());
put(StickerLaunchMigrationJob.KEY, new StickerLaunchMigrationJob.Factory());
put(StickerAdditionMigrationJob.KEY, new StickerAdditionMigrationJob.Factory());

View File

@@ -230,6 +230,11 @@ class BackupValues(store: KeyValueStore) : SignalStoreValues(store) {
return MessageBackupTier.deserialize(getLong(KEY_BACKUP_TIER, -1))
}
set(value) {
// TODO [backup] Remove for launch
if (!RemoteConfig.internalUser) {
throw IllegalStateException("Setting backup tier is only allowed for internal users!")
}
Log.i(TAG, "Setting backup tier to $value", Throwable(), true)
val serializedValue = MessageBackupTier.serialize(value)
if (value != null) {

View File

@@ -185,9 +185,10 @@ public class ApplicationMigrations {
static final int E164_FORMATTING_3 = 141;
static final int STORAGE_LOCAL_UNKNOWNS_FIX_2 = 142;
static final int SVR2_ENCLAVE_UPDATE_4 = 143;
static final int RESET_ARCHIVE_TIER = 144;
}
public static final int CURRENT_VERSION = 143;
public static final int CURRENT_VERSION = 144;
/**
* This *must* be called after the {@link JobManager} has been instantiated, but *before* the call
@@ -854,6 +855,10 @@ public class ApplicationMigrations {
jobs.put(Version.SVR2_ENCLAVE_UPDATE_4, new Svr2MirrorMigrationJob());
}
if (lastSeenVersion < Version.RESET_ARCHIVE_TIER) {
jobs.put(Version.RESET_ARCHIVE_TIER, new ResetArchiveTierMigrationJob());
}
return jobs;
}

View File

@@ -0,0 +1,47 @@
package org.thoughtcrime.securesms.migrations
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.util.RemoteConfig
/**
* There was an old bug that resulted in some users having their backup tier set to FREE.
* This fixes that.
*/
internal class ResetArchiveTierMigrationJob(
parameters: Parameters = Parameters.Builder().build()
) : MigrationJob(parameters) {
companion object {
val TAG = Log.tag(ResetArchiveTierMigrationJob::class.java)
const val KEY = "ResetArchiveTierMigrationJob"
}
override fun getFactoryKey(): String = KEY
override fun isUiBlocking(): Boolean = false
override fun performMigration() {
if (SignalStore.backup.backupTier == null) {
Log.i(TAG, "No backup tier set. Skipping.")
return
}
if (RemoteConfig.internalUser) {
Log.i(TAG, "Internal user. Skipping.")
return
}
Log.w(TAG, "Non-internal user had backup tier set: ${SignalStore.backup.backupTier}. Resetting.")
SignalStore.backup.backupTier = null
}
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<ResetArchiveTierMigrationJob> {
override fun create(parameters: Parameters, serializedData: ByteArray?): ResetArchiveTierMigrationJob {
return ResetArchiveTierMigrationJob(parameters)
}
}
}