Store Job data as bytes.

This commit is contained in:
Greyson Parrelli
2023-03-16 15:19:21 -04:00
parent b5af581205
commit 7c8de901f1
198 changed files with 1434 additions and 1302 deletions

View File

@@ -1,11 +1,11 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.StorageSyncJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -57,7 +57,7 @@ public class AccountRecordMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<AccountRecordMigrationJob> {
@Override
public @NonNull AccountRecordMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull AccountRecordMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new AccountRecordMigrationJob(parameters);
}
}

View File

@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.protobuf.InvalidProtocolBufferException;
@@ -8,7 +9,6 @@ import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.RecipientTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.RecipientRecord;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -86,7 +86,7 @@ public class ApplyUnknownFieldsToSelfMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<ApplyUnknownFieldsToSelfMigrationJob> {
@Override
public @NonNull ApplyUnknownFieldsToSelfMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull ApplyUnknownFieldsToSelfMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new ApplyUnknownFieldsToSelfMigrationJob(parameters);
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
/**
@@ -47,7 +47,7 @@ public class AttachmentCleanupMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<AttachmentCleanupMigrationJob> {
@Override
public @NonNull AttachmentCleanupMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull AttachmentCleanupMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new AttachmentCleanupMigrationJob(parameters);
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.RefreshAttributesJob;
import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob;
@@ -51,7 +51,7 @@ public final class AttributesMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<AttributesMigrationJob> {
@Override
public @NonNull AttributesMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull AttributesMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new AttributesMigrationJob(parameters);
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob;
@@ -48,7 +48,7 @@ public class AvatarIdRemovalMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<AvatarIdRemovalMigrationJob> {
@Override
public @NonNull AvatarIdRemovalMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull AvatarIdRemovalMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new AvatarIdRemovalMigrationJob(parameters);
}
}

View File

@@ -1,11 +1,11 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.StreamUtil;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.groups.GroupId;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.phonenumbers.NumberUtil;
import org.thoughtcrime.securesms.profiles.AvatarHelper;
@@ -88,7 +88,7 @@ public class AvatarMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<AvatarMigrationJob> {
@Override
public @NonNull AvatarMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull AvatarMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new AvatarMigrationJob(parameters);
}
}

View File

@@ -3,10 +3,10 @@ package org.thoughtcrime.securesms.migrations;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.backup.BackupFileIOError;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.util.BackupUtil;
@@ -61,7 +61,7 @@ public final class BackupNotificationMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<BackupNotificationMigrationJob> {
@Override
public @NonNull BackupNotificationMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull BackupNotificationMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new BackupNotificationMigrationJob(parameters);
}
}

View File

@@ -3,9 +3,9 @@ package org.thoughtcrime.securesms.migrations;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import java.io.File;
@@ -70,7 +70,7 @@ public class BlobStorageLocationMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<BlobStorageLocationMigrationJob> {
@Override
public @NonNull BlobStorageLocationMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull BlobStorageLocationMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new BlobStorageLocationMigrationJob(parameters);
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.util.FileUtils;
@@ -54,7 +54,7 @@ public class CachedAttachmentsMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<CachedAttachmentsMigrationJob> {
@Override
public @NonNull CachedAttachmentsMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull CachedAttachmentsMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new CachedAttachmentsMigrationJob(parameters);
}
}

View File

@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.migrations
import com.bumptech.glide.Glide
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
/**
@@ -28,7 +27,7 @@ internal class ClearGlideCacheMigrationJob(
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<ClearGlideCacheMigrationJob> {
override fun create(parameters: Parameters, data: Data): ClearGlideCacheMigrationJob {
override fun create(parameters: Parameters, serializedData: ByteArray?): ClearGlideCacheMigrationJob {
return ClearGlideCacheMigrationJob(parameters)
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
/**
@@ -44,7 +44,7 @@ public class DatabaseMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<DatabaseMigrationJob> {
@Override
public @NonNull DatabaseMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull DatabaseMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new DatabaseMigrationJob(parameters);
}
}

View File

@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.migrations
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobs.PushDecryptDrainedJob
@@ -29,7 +28,7 @@ internal class DecryptionsDrainedMigrationJob(
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<DecryptionsDrainedMigrationJob> {
override fun create(parameters: Parameters, data: Data): DecryptionsDrainedMigrationJob {
override fun create(parameters: Parameters, serializedData: ByteArray?): DecryptionsDrainedMigrationJob {
return DecryptionsDrainedMigrationJob(parameters)
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import java.io.File;
@@ -65,7 +65,7 @@ public class DeleteDeprecatedLogsMigrationJob extends MigrationJob {
public static final class Factory implements Job.Factory<DeleteDeprecatedLogsMigrationJob> {
@Override
public @NonNull DeleteDeprecatedLogsMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull DeleteDeprecatedLogsMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new DeleteDeprecatedLogsMigrationJob(parameters);
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -57,7 +57,7 @@ public final class DirectoryRefreshMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<DirectoryRefreshMigrationJob> {
@Override
public @NonNull DirectoryRefreshMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull DirectoryRefreshMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new DirectoryRefreshMigrationJob(parameters);
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.DownloadLatestEmojiDataJob;
import org.thoughtcrime.securesms.jobs.EmojiSearchIndexDownloadJob;
@@ -46,7 +46,7 @@ public final class EmojiDownloadMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<EmojiDownloadMigrationJob> {
@Override
public @NonNull EmojiDownloadMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull EmojiDownloadMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new EmojiDownloadMigrationJob(parameters);
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.KbsEnclaveMigrationWorkerJob;
@@ -46,7 +46,7 @@ public class KbsEnclaveMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<KbsEnclaveMigrationJob> {
@Override
public @NonNull KbsEnclaveMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull KbsEnclaveMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new KbsEnclaveMigrationJob(parameters);
}
}

View File

@@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.migrations;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceManager;
import org.signal.core.util.logging.Log;
@@ -15,7 +16,6 @@ import org.thoughtcrime.securesms.database.PushTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob;
@@ -282,7 +282,7 @@ public class LegacyMigrationJob extends MigrationJob {
public static final class Factory implements Job.Factory<LegacyMigrationJob> {
@Override
public @NonNull LegacyMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull LegacyMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new LegacyMigrationJob(parameters);
}
}

View File

@@ -1,9 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.greenrobot.eventbus.EventBus;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.JsonJobData;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.BaseJob;
@@ -38,8 +39,8 @@ public class MigrationCompleteJob extends BaseJob {
}
@Override
public @NonNull Data serialize() {
return new Data.Builder().putInt(KEY_VERSION, version).build();
public @Nullable byte[] serialize() {
return new JsonJobData.Builder().putInt(KEY_VERSION, version).serialize();
}
@Override
@@ -64,7 +65,8 @@ public class MigrationCompleteJob extends BaseJob {
public static class Factory implements Job.Factory<MigrationCompleteJob> {
@Override
public @NonNull MigrationCompleteJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull MigrationCompleteJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
JsonJobData data = JsonJobData.deserialize(serializedData);
return new MigrationCompleteJob(parameters, data.getInt(KEY_VERSION));
}
}

View File

@@ -1,9 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.JsonJobData;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobLogger;
import org.thoughtcrime.securesms.jobmanager.impl.BackoffUtil;
@@ -31,8 +32,8 @@ abstract class MigrationJob extends Job {
}
@Override
public @NonNull Data serialize() {
return Data.EMPTY;
public @Nullable byte[] serialize() {
return null;
}
@Override

View File

@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.migrations
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobs.OptimizeMessageSearchIndexJob
@@ -28,7 +27,7 @@ internal class OptimizeMessageSearchIndexMigrationJob(
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<OptimizeMessageSearchIndexMigrationJob> {
override fun create(parameters: Parameters, data: Data): OptimizeMessageSearchIndexMigrationJob {
override fun create(parameters: Parameters, serializedData: ByteArray?): OptimizeMessageSearchIndexMigrationJob {
return OptimizeMessageSearchIndexMigrationJob(parameters)
}
}

View File

@@ -1,8 +1,8 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
/**
@@ -39,7 +39,7 @@ public final class PassingMigrationJob extends MigrationJob {
public static final class Factory implements Job.Factory<PassingMigrationJob> {
@Override
public @NonNull PassingMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull PassingMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new PassingMigrationJob(parameters);
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.RefreshAttributesJob;
import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob;
@@ -64,7 +64,7 @@ public final class PinOptOutMigration extends MigrationJob {
public static class Factory implements Job.Factory<PinOptOutMigration> {
@Override
public @NonNull PinOptOutMigration create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull PinOptOutMigration create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new PinOptOutMigration(parameters);
}
}

View File

@@ -1,8 +1,8 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -43,7 +43,7 @@ public class PinReminderMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<PinReminderMigrationJob> {
@Override
public @NonNull PinReminderMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull PinReminderMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new PinReminderMigrationJob(parameters);
}
}

View File

@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.signal.libsignal.protocol.state.PreKeyRecord;
@@ -9,7 +10,6 @@ import org.signal.libsignal.protocol.state.SignedPreKeyRecord;
import org.thoughtcrime.securesms.crypto.PreKeyUtil;
import org.thoughtcrime.securesms.crypto.storage.PreKeyMetadataStore;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -93,7 +93,7 @@ public class PniAccountInitializationMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<PniAccountInitializationMigrationJob> {
@Override
public @NonNull PniAccountInitializationMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull PniAccountInitializationMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new PniAccountInitializationMigrationJob(parameters);
}
}

View File

@@ -1,16 +1,14 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.signalservice.api.push.PNI;
import java.io.IOException;
@@ -66,7 +64,7 @@ public class PniMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<PniMigrationJob> {
@Override
public @NonNull PniMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull PniMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new PniMigrationJob(parameters);
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.ProfileUploadJob;
@@ -48,7 +48,7 @@ public final class ProfileMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<ProfileMigrationJob> {
@Override
public @NonNull ProfileMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull ProfileMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new ProfileMigrationJob(parameters);
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -45,7 +45,7 @@ public class ProfileSharingUpdateMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<ProfileSharingUpdateMigrationJob> {
@Override
public @NonNull ProfileSharingUpdateMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull ProfileSharingUpdateMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new ProfileSharingUpdateMigrationJob(parameters);
}
}

View File

@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.migrations
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
/**
@@ -30,7 +29,7 @@ internal class RebuildMessageSearchIndexMigrationJob(
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<RebuildMessageSearchIndexMigrationJob> {
override fun create(parameters: Parameters, data: Data): RebuildMessageSearchIndexMigrationJob {
override fun create(parameters: Parameters, serializedData: ByteArray?): RebuildMessageSearchIndexMigrationJob {
return RebuildMessageSearchIndexMigrationJob(parameters)
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
@@ -47,7 +47,7 @@ public class RecipientSearchMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<RecipientSearchMigrationJob> {
@Override
public @NonNull RecipientSearchMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull RecipientSearchMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new RecipientSearchMigrationJob(parameters);
}
}

View File

@@ -3,10 +3,11 @@ package org.thoughtcrime.securesms.migrations;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.signal.libsignal.protocol.InvalidKeyException;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.JsonJobData;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.jobs.BaseJob;
@@ -44,8 +45,8 @@ public final class RegistrationPinV2MigrationJob extends BaseJob {
}
@Override
public @NonNull Data serialize() {
return Data.EMPTY;
public @Nullable byte[] serialize() {
return null;
}
@Override
@@ -84,7 +85,7 @@ public final class RegistrationPinV2MigrationJob extends BaseJob {
public static class Factory implements Job.Factory<RegistrationPinV2MigrationJob> {
@Override
public @NonNull RegistrationPinV2MigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull RegistrationPinV2MigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new RegistrationPinV2MigrationJob(parameters);
}
}

View File

@@ -1,12 +1,13 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.annimon.stream.Stream;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.JsonJobData;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob;
@@ -49,9 +50,9 @@ public class StickerAdditionMigrationJob extends MigrationJob {
}
@Override
public @NonNull Data serialize() {
public @Nullable byte[] serialize() {
String[] packsRaw = Stream.of(packs).map(BlessedPacks.Pack::toJson).toArray(String[]::new);
return new Data.Builder().putStringArray(KEY_PACKS, packsRaw).build();
return new JsonJobData.Builder().putStringArray(KEY_PACKS, packsRaw).serialize();
}
@Override
@@ -71,7 +72,8 @@ public class StickerAdditionMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<StickerAdditionMigrationJob> {
@Override
public @NonNull StickerAdditionMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull StickerAdditionMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
JsonJobData data = JsonJobData.deserialize(serializedData);
String[] raw = data.getStringArray(KEY_PACKS);
List<BlessedPacks.Pack> packs = Stream.of(raw).map(BlessedPacks.Pack::fromJson).toList();

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob;
import org.thoughtcrime.securesms.stickers.BlessedPacks;
@@ -45,7 +45,7 @@ public class StickerDayByDayMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<StickerDayByDayMigrationJob> {
@Override
public @NonNull StickerDayByDayMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull StickerDayByDayMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new StickerDayByDayMigrationJob(parameters);
}
}

View File

@@ -3,11 +3,11 @@ package org.thoughtcrime.securesms.migrations;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.StickerTable;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.MultiDeviceStickerPackOperationJob;
@@ -66,7 +66,7 @@ public class StickerLaunchMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<StickerLaunchMigrationJob> {
@Override
public @NonNull
StickerLaunchMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
StickerLaunchMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new StickerLaunchMigrationJob(parameters);
}
}

View File

@@ -1,9 +1,9 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob;
import org.thoughtcrime.securesms.stickers.BlessedPacks;
@@ -45,7 +45,7 @@ public class StickerMyDailyLifeMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<StickerMyDailyLifeMigrationJob> {
@Override
public @NonNull StickerMyDailyLifeMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull StickerMyDailyLifeMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new StickerMyDailyLifeMigrationJob(parameters);
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.MultiDeviceKeysUpdateJob;
@@ -72,7 +72,7 @@ public class StorageCapabilityMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<StorageCapabilityMigrationJob> {
@Override
public @NonNull StorageCapabilityMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull StorageCapabilityMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new StorageCapabilityMigrationJob(parameters);
}
}

View File

@@ -1,11 +1,11 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.MultiDeviceKeysUpdateJob;
@@ -70,7 +70,7 @@ public class StorageServiceMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<StorageServiceMigrationJob> {
@Override
public @NonNull StorageServiceMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull StorageServiceMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new StorageServiceMigrationJob(parameters);
}
}

View File

@@ -1,13 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobs.DownloadLatestEmojiDataJob;
import org.thoughtcrime.securesms.jobs.EmojiSearchIndexDownloadJob;
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
/**
@@ -49,7 +46,7 @@ public final class StorageServiceSystemNameMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<StorageServiceSystemNameMigrationJob> {
@Override
public @NonNull StorageServiceSystemNameMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull StorageServiceSystemNameMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new StorageServiceSystemNameMigrationJob(parameters);
}
}

View File

@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.migrations
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.database.SignalDatabase.Companion.recipients
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient
@@ -38,7 +37,7 @@ internal class StoryReadStateMigrationJob(
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<StoryReadStateMigrationJob> {
override fun create(parameters: Parameters, data: Data): StoryReadStateMigrationJob {
override fun create(parameters: Parameters, serializedData: ByteArray?): StoryReadStateMigrationJob {
return StoryReadStateMigrationJob(parameters)
}
}

View File

@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.migrations
import org.thoughtcrime.securesms.database.SignalDatabase.Companion.recipients
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient
@@ -35,7 +34,7 @@ internal class StoryViewedReceiptsStateMigrationJob(
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<StoryViewedReceiptsStateMigrationJob> {
override fun create(parameters: Parameters, data: Data): StoryViewedReceiptsStateMigrationJob {
override fun create(parameters: Parameters, serializedData: ByteArray?): StoryViewedReceiptsStateMigrationJob {
return StoryViewedReceiptsStateMigrationJob(parameters)
}
}

View File

@@ -1,10 +1,10 @@
package org.thoughtcrime.securesms.migrations;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -77,7 +77,7 @@ public final class SyncDistributionListsMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<SyncDistributionListsMigrationJob> {
@Override
public @NonNull SyncDistributionListsMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull SyncDistributionListsMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new SyncDistributionListsMigrationJob(parameters);
}
}

View File

@@ -4,10 +4,10 @@ import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -60,7 +60,7 @@ public class TrimByLengthSettingsMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<TrimByLengthSettingsMigrationJob> {
@Override
public @NonNull TrimByLengthSettingsMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull TrimByLengthSettingsMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new TrimByLengthSettingsMigrationJob(parameters);
}
}

View File

@@ -2,9 +2,8 @@ package org.thoughtcrime.securesms.migrations
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Data.Serializer
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobmanager.JsonJobData
import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec
import org.thoughtcrime.securesms.keyvalue.SignalStore
@@ -35,20 +34,20 @@ internal class UpdateSmsJobsMigrationJob(
val idOffset = SignalStore.plaintext().smsMigrationIdOffset
check(idOffset >= 0) { "Invalid ID offset of $idOffset -- this shouldn't be possible!" }
ApplicationDependencies.getJobManager().update { jobSpec, serializer ->
ApplicationDependencies.getJobManager().update { jobSpec ->
when (jobSpec.factoryKey) {
"PushTextSendJob" -> jobSpec.updateAndSerialize(serializer, "message_id", null, idOffset)
"ReactionSendJob" -> jobSpec.updateAndSerialize(serializer, "message_id", "is_mms", idOffset)
"RemoteDeleteSendJob" -> jobSpec.updateAndSerialize(serializer, "message_id", "is_mms", idOffset)
"SmsSendJob" -> jobSpec.updateAndSerialize(serializer, "message_id", null, idOffset)
"SmsSentJob" -> jobSpec.updateAndSerialize(serializer, "message_id", null, idOffset)
"PushTextSendJob" -> jobSpec.updateAndSerialize("message_id", null, idOffset)
"ReactionSendJob" -> jobSpec.updateAndSerialize("message_id", "is_mms", idOffset)
"RemoteDeleteSendJob" -> jobSpec.updateAndSerialize("message_id", "is_mms", idOffset)
"SmsSendJob" -> jobSpec.updateAndSerialize("message_id", null, idOffset)
"SmsSentJob" -> jobSpec.updateAndSerialize("message_id", null, idOffset)
else -> jobSpec
}
}
}
private fun JobSpec.updateAndSerialize(serializer: Serializer, idKey: String, isMmsKey: String?, offset: Long): JobSpec {
val data = serializer.deserialize(this.serializedData)
private fun JobSpec.updateAndSerialize(idKey: String, isMmsKey: String?, offset: Long): JobSpec {
val data = JsonJobData.deserialize(this.serializedData)
if (isMmsKey != null && data.getBooleanOrDefault(isMmsKey, false)) {
return this
@@ -57,10 +56,10 @@ internal class UpdateSmsJobsMigrationJob(
return if (data.hasLong(idKey)) {
val currentValue: Long = data.getLong(idKey)
val updatedValue: Long = currentValue + offset
val updatedData: Data = data.buildUpon().putLong(idKey, updatedValue).build()
val updatedData: JsonJobData = data.buildUpon().putLong(idKey, updatedValue).build()
Log.d(TAG, "Updating job with factory ${this.factoryKey} from $currentValue to $updatedValue")
this.withData(serializer.serialize(updatedData))
this.withData(updatedData.serialize())
} else {
this
}
@@ -69,7 +68,7 @@ internal class UpdateSmsJobsMigrationJob(
override fun shouldRetry(e: Exception): Boolean = false
class Factory : Job.Factory<UpdateSmsJobsMigrationJob> {
override fun create(parameters: Parameters, data: Data): UpdateSmsJobsMigrationJob {
override fun create(parameters: Parameters, serializedData: ByteArray?): UpdateSmsJobsMigrationJob {
return UpdateSmsJobsMigrationJob(parameters)
}
}

View File

@@ -5,6 +5,7 @@ import android.app.PendingIntent;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.app.TaskStackBuilder;
@@ -16,7 +17,6 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.ThreadTable;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.notifications.NotificationChannels;
@@ -128,7 +128,7 @@ public class UserNotificationMigrationJob extends MigrationJob {
public static final class Factory implements Job.Factory<UserNotificationMigrationJob> {
@Override
public @NonNull UserNotificationMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull UserNotificationMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new UserNotificationMigrationJob(parameters);
}
}

View File

@@ -4,11 +4,11 @@ import android.content.Context;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -83,7 +83,7 @@ public class UuidMigrationJob extends MigrationJob {
public static class Factory implements Job.Factory<UuidMigrationJob> {
@Override
public @NonNull UuidMigrationJob create(@NonNull Parameters parameters, @NonNull Data data) {
public @NonNull UuidMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
return new UuidMigrationJob(parameters);
}
}