Extract base archive classes into their own module.

This commit is contained in:
Greyson Parrelli
2026-03-21 08:53:47 -04:00
committed by Cody Henthorne
parent 08491579dd
commit 8a887b65a1
64 changed files with 668 additions and 525 deletions
@@ -25,6 +25,7 @@ import androidx.annotation.WorkerThread
import androidx.core.content.contentValuesOf
import com.bumptech.glide.Glide
import okio.ByteString.Companion.toByteString
import org.signal.archive.proto.BackupDebugInfo
import org.signal.blurhash.BlurHash
import org.signal.core.models.backup.MediaId
import org.signal.core.models.backup.MediaName
@@ -76,7 +77,6 @@ import org.thoughtcrime.securesms.attachments.WallpaperAttachment
import org.thoughtcrime.securesms.audio.AudioHash
import org.thoughtcrime.securesms.backup.v2.ArchivedMediaObject
import org.thoughtcrime.securesms.backup.v2.exporters.ChatItemArchiveExporter
import org.thoughtcrime.securesms.backup.v2.proto.BackupDebugInfo
import org.thoughtcrime.securesms.crypto.AttachmentSecret
import org.thoughtcrime.securesms.crypto.ClassicDecryptingPartInputStream
import org.thoughtcrime.securesms.crypto.ModernDecryptingPartInputStream
@@ -8,12 +8,12 @@ package org.thoughtcrime.securesms.database.helpers.migration
import android.app.Application
import androidx.core.content.contentValuesOf
import okio.IOException
import org.signal.archive.proto.GroupInvitationRevokedUpdate
import org.signal.core.models.ServiceId
import org.signal.core.util.forEach
import org.signal.core.util.logging.Log
import org.signal.core.util.requireBlob
import org.signal.core.util.requireLong
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationRevokedUpdate
import org.thoughtcrime.securesms.database.SQLiteDatabase
import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras
@@ -50,8 +50,9 @@ object V258_FixGroupRevokedInviteeUpdate : SignalDatabaseMigration {
updates
.replaceAll { change ->
if (change.groupInvitationRevokedUpdate != null) {
val invitees = change.groupInvitationRevokedUpdate.invitees.toMutableList()
val revokedUpdate = change.groupInvitationRevokedUpdate
if (revokedUpdate != null) {
val invitees = revokedUpdate.invitees.toMutableList()
invitees.replaceAll { invitee ->
val inviteeAciFieldServiceId = ServiceId.parseOrNull(invitee.inviteeAci)
@@ -69,7 +70,7 @@ object V258_FixGroupRevokedInviteeUpdate : SignalDatabaseMigration {
}
}
change.copy(groupInvitationRevokedUpdate = change.groupInvitationRevokedUpdate.copy(invitees = invitees))
change.copy(groupInvitationRevokedUpdate = revokedUpdate.copy(invitees = invitees))
} else {
change
}
@@ -8,12 +8,12 @@ package org.thoughtcrime.securesms.database.helpers.migration
import android.app.Application
import androidx.core.content.contentValuesOf
import okio.IOException
import org.signal.archive.proto.GroupMemberAddedUpdate
import org.signal.core.models.ServiceId
import org.signal.core.util.forEach
import org.signal.core.util.logging.Log
import org.signal.core.util.requireBlob
import org.signal.core.util.requireLong
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberAddedUpdate
import org.thoughtcrime.securesms.database.SQLiteDatabase
import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras
@@ -50,9 +50,10 @@ object V264_FixGroupAddMemberUpdate : SignalDatabaseMigration {
updates
.replaceAll { change ->
if (change.groupMemberAddedUpdate != null && ServiceId.parseOrNull(change.groupMemberAddedUpdate.updaterAci) is ServiceId.PNI) {
val addedUpdate = change.groupMemberAddedUpdate
if (addedUpdate != null && ServiceId.parseOrNull(addedUpdate.updaterAci) is ServiceId.PNI) {
dataMigrated = true
change.copy(groupMemberAddedUpdate = change.groupMemberAddedUpdate.copy(updaterAci = null))
change.copy(groupMemberAddedUpdate = addedUpdate.copy(updaterAci = null))
} else {
change
}
@@ -8,12 +8,12 @@ package org.thoughtcrime.securesms.database.helpers.migration
import android.app.Application
import androidx.core.content.contentValuesOf
import okio.IOException
import org.signal.archive.proto.GroupInvitationDeclinedUpdate
import org.signal.core.models.ServiceId
import org.signal.core.util.forEach
import org.signal.core.util.logging.Log
import org.signal.core.util.requireBlob
import org.signal.core.util.requireLong
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationDeclinedUpdate
import org.thoughtcrime.securesms.database.SQLiteDatabase
import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras
@@ -49,8 +49,9 @@ object V267_FixGroupInvitationDeclinedUpdate : SignalDatabaseMigration {
updates
.replaceAll { change ->
if (change.groupInvitationDeclinedUpdate != null && ServiceId.parseOrNull(change.groupInvitationDeclinedUpdate.inviteeAci) is ServiceId.PNI) {
change.copy(groupInvitationDeclinedUpdate = change.groupInvitationDeclinedUpdate.copy(inviteeAci = null))
val declinedUpdate = change.groupInvitationDeclinedUpdate
if (declinedUpdate != null && ServiceId.parseOrNull(declinedUpdate.inviteeAci) is ServiceId.PNI) {
change.copy(groupInvitationDeclinedUpdate = declinedUpdate.copy(inviteeAci = null))
} else {
change
}
@@ -5,7 +5,7 @@ import androidx.annotation.Nullable;
import org.signal.core.util.Base64;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.backup.v2.proto.GroupCall;
import org.signal.archive.proto.GroupCall;
import org.thoughtcrime.securesms.database.model.databaseprotos.GroupCallUpdateDetails;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.signal.core.models.ServiceId;
@@ -6,6 +6,40 @@
package org.thoughtcrime.securesms.database.model
import okio.ByteString
import org.signal.archive.proto.GenericGroupUpdate
import org.signal.archive.proto.GroupAdminStatusUpdate
import org.signal.archive.proto.GroupAnnouncementOnlyChangeUpdate
import org.signal.archive.proto.GroupAttributesAccessLevelChangeUpdate
import org.signal.archive.proto.GroupAvatarUpdate
import org.signal.archive.proto.GroupChangeChatUpdate
import org.signal.archive.proto.GroupCreationUpdate
import org.signal.archive.proto.GroupDescriptionUpdate
import org.signal.archive.proto.GroupExpirationTimerUpdate
import org.signal.archive.proto.GroupInvitationAcceptedUpdate
import org.signal.archive.proto.GroupInvitationDeclinedUpdate
import org.signal.archive.proto.GroupInvitationRevokedUpdate
import org.signal.archive.proto.GroupInviteLinkAdminApprovalUpdate
import org.signal.archive.proto.GroupInviteLinkDisabledUpdate
import org.signal.archive.proto.GroupInviteLinkEnabledUpdate
import org.signal.archive.proto.GroupInviteLinkResetUpdate
import org.signal.archive.proto.GroupJoinRequestApprovalUpdate
import org.signal.archive.proto.GroupJoinRequestCanceledUpdate
import org.signal.archive.proto.GroupJoinRequestUpdate
import org.signal.archive.proto.GroupMemberAddedUpdate
import org.signal.archive.proto.GroupMemberJoinedByLinkUpdate
import org.signal.archive.proto.GroupMemberJoinedUpdate
import org.signal.archive.proto.GroupMemberLabelAccessLevelChangeUpdate
import org.signal.archive.proto.GroupMemberLeftUpdate
import org.signal.archive.proto.GroupMemberRemovedUpdate
import org.signal.archive.proto.GroupMembershipAccessLevelChangeUpdate
import org.signal.archive.proto.GroupNameUpdate
import org.signal.archive.proto.GroupSelfInvitationRevokedUpdate
import org.signal.archive.proto.GroupSequenceOfRequestsAndCancelsUpdate
import org.signal.archive.proto.GroupTerminateChangeUpdate
import org.signal.archive.proto.GroupUnknownInviteeUpdate
import org.signal.archive.proto.GroupV2AccessLevel
import org.signal.archive.proto.SelfInvitedOtherUserToGroupUpdate
import org.signal.archive.proto.SelfInvitedToGroupUpdate
import org.signal.core.models.ServiceId
import org.signal.core.util.BidiUtil
import org.signal.core.util.UuidUtil
@@ -18,40 +52,6 @@ import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChang
import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMember
import org.signal.storageservice.storage.protos.groups.local.DecryptedRequestingMember
import org.signal.storageservice.storage.protos.groups.local.EnabledState
import org.thoughtcrime.securesms.backup.v2.proto.GenericGroupUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupAdminStatusUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupAnnouncementOnlyChangeUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupAttributesAccessLevelChangeUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupAvatarUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupChangeChatUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupCreationUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupDescriptionUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupExpirationTimerUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationAcceptedUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationDeclinedUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationRevokedUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkAdminApprovalUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkDisabledUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkEnabledUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkResetUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupJoinRequestApprovalUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupJoinRequestCanceledUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupJoinRequestUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberAddedUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberJoinedByLinkUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberJoinedUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberLabelAccessLevelChangeUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberLeftUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberRemovedUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupMembershipAccessLevelChangeUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupNameUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupSelfInvitationRevokedUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupSequenceOfRequestsAndCancelsUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupTerminateChangeUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupUnknownInviteeUpdate
import org.thoughtcrime.securesms.backup.v2.proto.GroupV2AccessLevel
import org.thoughtcrime.securesms.backup.v2.proto.SelfInvitedOtherUserToGroupUpdate
import org.thoughtcrime.securesms.backup.v2.proto.SelfInvitedToGroupUpdate
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context
import org.whispersystems.signalservice.api.groupsv2.DecryptedGroupUtil
import org.whispersystems.signalservice.api.push.ServiceIds
@@ -26,43 +26,43 @@ import org.signal.storageservice.storage.protos.groups.local.DecryptedPendingMem
import org.signal.storageservice.storage.protos.groups.local.DecryptedRequestingMember;
import org.signal.storageservice.storage.protos.groups.local.EnabledState;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.backup.v2.proto.GenericGroupUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupAdminStatusUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupAnnouncementOnlyChangeUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupAttributesAccessLevelChangeUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupAvatarUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupChangeChatUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupCreationUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupDescriptionUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupExpirationTimerUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationAcceptedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationDeclinedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupInvitationRevokedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkAdminApprovalUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkDisabledUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkEnabledUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupInviteLinkResetUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupJoinRequestApprovalUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupJoinRequestCanceledUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupJoinRequestUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberAddedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberJoinedByLinkUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberJoinedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberLabelAccessLevelChangeUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberLeftUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupMemberRemovedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupMembershipAccessLevelChangeUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupNameUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupSelfInvitationRevokedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupTerminateChangeUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupUnknownInviteeUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupV2AccessLevel;
import org.thoughtcrime.securesms.backup.v2.proto.GroupV2MigrationDroppedMembersUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupV2MigrationInvitedMembersUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupV2MigrationSelfInvitedUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupV2MigrationUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.SelfInvitedOtherUserToGroupUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.SelfInvitedToGroupUpdate;
import org.signal.archive.proto.GenericGroupUpdate;
import org.signal.archive.proto.GroupAdminStatusUpdate;
import org.signal.archive.proto.GroupAnnouncementOnlyChangeUpdate;
import org.signal.archive.proto.GroupAttributesAccessLevelChangeUpdate;
import org.signal.archive.proto.GroupAvatarUpdate;
import org.signal.archive.proto.GroupChangeChatUpdate;
import org.signal.archive.proto.GroupCreationUpdate;
import org.signal.archive.proto.GroupDescriptionUpdate;
import org.signal.archive.proto.GroupExpirationTimerUpdate;
import org.signal.archive.proto.GroupInvitationAcceptedUpdate;
import org.signal.archive.proto.GroupInvitationDeclinedUpdate;
import org.signal.archive.proto.GroupInvitationRevokedUpdate;
import org.signal.archive.proto.GroupInviteLinkAdminApprovalUpdate;
import org.signal.archive.proto.GroupInviteLinkDisabledUpdate;
import org.signal.archive.proto.GroupInviteLinkEnabledUpdate;
import org.signal.archive.proto.GroupInviteLinkResetUpdate;
import org.signal.archive.proto.GroupJoinRequestApprovalUpdate;
import org.signal.archive.proto.GroupJoinRequestCanceledUpdate;
import org.signal.archive.proto.GroupJoinRequestUpdate;
import org.signal.archive.proto.GroupMemberAddedUpdate;
import org.signal.archive.proto.GroupMemberJoinedByLinkUpdate;
import org.signal.archive.proto.GroupMemberJoinedUpdate;
import org.signal.archive.proto.GroupMemberLabelAccessLevelChangeUpdate;
import org.signal.archive.proto.GroupMemberLeftUpdate;
import org.signal.archive.proto.GroupMemberRemovedUpdate;
import org.signal.archive.proto.GroupMembershipAccessLevelChangeUpdate;
import org.signal.archive.proto.GroupNameUpdate;
import org.signal.archive.proto.GroupSelfInvitationRevokedUpdate;
import org.signal.archive.proto.GroupTerminateChangeUpdate;
import org.signal.archive.proto.GroupUnknownInviteeUpdate;
import org.signal.archive.proto.GroupV2AccessLevel;
import org.signal.archive.proto.GroupV2MigrationDroppedMembersUpdate;
import org.signal.archive.proto.GroupV2MigrationInvitedMembersUpdate;
import org.signal.archive.proto.GroupV2MigrationSelfInvitedUpdate;
import org.signal.archive.proto.GroupV2MigrationUpdate;
import org.signal.archive.proto.SelfInvitedOtherUserToGroupUpdate;
import org.signal.archive.proto.SelfInvitedToGroupUpdate;
import org.thoughtcrime.securesms.fonts.SignalSymbols.Glyph;
import org.thoughtcrime.securesms.groups.GV2AccessLevelUtil;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -38,8 +38,8 @@ import org.signal.core.util.logging.Log;
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup;
import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.backup.v2.proto.GroupChangeChatUpdate;
import org.thoughtcrime.securesms.backup.v2.proto.GroupCreationUpdate;
import org.signal.archive.proto.GroupChangeChatUpdate;
import org.signal.archive.proto.GroupCreationUpdate;
import org.thoughtcrime.securesms.components.emoji.EmojiProvider;
import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser;
import org.thoughtcrime.securesms.components.transfercontrols.TransferControlView;