diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java index e78be1968a..87ac3ca134 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java @@ -14,8 +14,8 @@ import org.thoughtcrime.securesms.jobmanager.impl.BatteryNotLowConstraint; import org.thoughtcrime.securesms.jobmanager.impl.CellServiceConstraintObserver; import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraint; import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraintObserver; -import org.thoughtcrime.securesms.jobmanager.impl.ChargingConstraint; import org.thoughtcrime.securesms.jobmanager.impl.ChargingAndBatteryIsNotLowConstraintObserver; +import org.thoughtcrime.securesms.jobmanager.impl.ChargingConstraint; import org.thoughtcrime.securesms.jobmanager.impl.DataRestoreConstraint; import org.thoughtcrime.securesms.jobmanager.impl.DataRestoreConstraintObserver; import org.thoughtcrime.securesms.jobmanager.impl.DecryptionsDrainedConstraint; @@ -67,7 +67,6 @@ import org.thoughtcrime.securesms.migrations.EmojiDownloadMigrationJob; import org.thoughtcrime.securesms.migrations.EmojiSearchIndexCheckMigrationJob; import org.thoughtcrime.securesms.migrations.GooglePlayBillingPurchaseTokenMigrationJob; import org.thoughtcrime.securesms.migrations.IdentityTableCleanupMigrationJob; -import org.thoughtcrime.securesms.migrations.InactiveGroupCheckMigrationJob; import org.thoughtcrime.securesms.migrations.LegacyMigrationJob; import org.thoughtcrime.securesms.migrations.MigrationCompleteJob; import org.thoughtcrime.securesms.migrations.OptimizeMessageSearchIndexMigrationJob; @@ -294,7 +293,6 @@ public final class JobManagerFactories { put(EmojiSearchIndexCheckMigrationJob.KEY, new EmojiSearchIndexCheckMigrationJob.Factory()); put(GooglePlayBillingPurchaseTokenMigrationJob.KEY, new GooglePlayBillingPurchaseTokenMigrationJob.Factory()); put(IdentityTableCleanupMigrationJob.KEY, new IdentityTableCleanupMigrationJob.Factory()); - put(InactiveGroupCheckMigrationJob.KEY, new InactiveGroupCheckMigrationJob.Factory()); put(LegacyMigrationJob.KEY, new LegacyMigrationJob.Factory()); put(MigrationCompleteJob.KEY, new MigrationCompleteJob.Factory()); put(OptimizeMessageSearchIndexMigrationJob.KEY, new OptimizeMessageSearchIndexMigrationJob.Factory()); @@ -378,6 +376,7 @@ public final class JobManagerFactories { put("SubscriptionReceiptCredentialsSubmissionJob", new FailingJob.Factory()); put("DonationReceiptRedemptionJob", new FailingJob.Factory()); put("SendGiftJob", new FailingJob.Factory()); + put("InactiveGroupCheckMigrationJob", new PassingMigrationJob.Factory()); }}; } 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 ebb4c1a73c..541dcc0432 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/ApplicationMigrations.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/ApplicationMigrations.java @@ -774,9 +774,9 @@ public class ApplicationMigrations { jobs.put(Version.SSRE2_CAPABILITY, new AttributesMigrationJob()); } - if (lastSeenVersion < Version.FIX_INACTIVE_GROUPS) { - jobs.put(Version.FIX_INACTIVE_GROUPS, new InactiveGroupCheckMigrationJob()); - } +// if (lastSeenVersion < Version.FIX_INACTIVE_GROUPS) { +// jobs.put(Version.FIX_INACTIVE_GROUPS, new InactiveGroupCheckMigrationJob()); +// } return jobs; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/InactiveGroupCheckMigrationJob.kt b/app/src/main/java/org/thoughtcrime/securesms/migrations/InactiveGroupCheckMigrationJob.kt deleted file mode 100644 index c64b221f41..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/InactiveGroupCheckMigrationJob.kt +++ /dev/null @@ -1,67 +0,0 @@ -package org.thoughtcrime.securesms.migrations - -import org.signal.core.util.logging.Log -import org.signal.storageservice.protos.groups.local.DecryptedGroup -import org.thoughtcrime.securesms.database.SignalDatabase -import org.thoughtcrime.securesms.dependencies.AppDependencies -import org.thoughtcrime.securesms.jobmanager.Job -import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob -import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.whispersystems.signalservice.api.push.ServiceId -import org.whispersystems.signalservice.api.push.ServiceIds - -/** - * Migration to fix groups that we locally marked as inactive because of the server - * but may not actually be left. - */ -internal class InactiveGroupCheckMigrationJob( - parameters: Parameters = Parameters.Builder().build() -) : MigrationJob(parameters) { - - companion object { - val TAG = Log.tag(InactiveGroupCheckMigrationJob::class.java) - const val KEY = "InactiveGroupCheckMigrationJob" - } - - override fun getFactoryKey(): String = KEY - - override fun isUiBlocking(): Boolean = false - - override fun performMigration() { - if (SignalStore.account.aci == null) { - Log.w(TAG, "ACI missing, abort") - return - } - - val serviceIds = SignalStore.account.getServiceIds() - - SignalDatabase - .groups - .getInactiveGroups() - .use { reader -> - reader - .asSequence() - .filter { it.isV2Group } - .filter { it.requireV2GroupProperties().decryptedGroup.isMember(serviceIds) } - .forEach { - AppDependencies.jobManager.add(RequestGroupV2InfoJob(it.id.requireV2())) - } - } - } - - private fun DecryptedGroup.isMember(serviceIds: ServiceIds): Boolean { - return this - .members - .asSequence() - .mapNotNull { ServiceId.ACI.Companion.parseOrNull(it.aciBytes) } - .any { serviceIds.matches(it) } - } - - override fun shouldRetry(e: Exception): Boolean = false - - class Factory : Job.Factory { - override fun create(parameters: Parameters, serializedData: ByteArray?): InactiveGroupCheckMigrationJob { - return InactiveGroupCheckMigrationJob(parameters) - } - } -}