diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt index ce346fd9da..5ae22165b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt @@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.attachments.Cdn import org.thoughtcrime.securesms.attachments.DatabaseAttachment +import org.thoughtcrime.securesms.backup.v2.database.clearAllDataForBackup import org.thoughtcrime.securesms.backup.v2.database.clearAllDataForBackupRestore import org.thoughtcrime.securesms.backup.v2.importer.ChatItemArchiveImporter import org.thoughtcrime.securesms.backup.v2.processor.AccountDataArchiveProcessor @@ -386,8 +387,6 @@ object BackupRepository { return ImportResult.Failure } - // Note: Without a transaction, bad imports could lead to lost data. But because we have a transaction, - // writes from other threads are blocked. This is something to think more about. SignalDatabase.rawDatabase.withinTransaction { SignalDatabase.recipients.clearAllDataForBackupRestore() SignalDatabase.distributionLists.clearAllDataForBackupRestore() @@ -398,6 +397,8 @@ object BackupRepository { SignalDatabase.reactions.clearAllDataForBackupRestore() SignalDatabase.inAppPayments.clearAllDataForBackupRestore() SignalDatabase.chatColors.clearAllDataForBackupRestore() + SignalDatabase.calls.clearAllDataForBackup() + SignalDatabase.callLinks.clearAllDataForBackup() // Add back self after clearing data val selfId: RecipientId = SignalDatabase.recipients.getAndPossiblyMerge(selfData.aci, selfData.pni, selfData.e164, pniVerified = true, changeSelf = true) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt index 3f62008b3e..52394176ce 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/AttachmentTableArchiveExtensions.kt @@ -5,6 +5,7 @@ package org.thoughtcrime.securesms.backup.v2.database +import org.signal.core.util.SqlUtil import org.signal.core.util.deleteAll import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.attachments.AttachmentId @@ -12,6 +13,7 @@ import org.thoughtcrime.securesms.database.AttachmentTable fun AttachmentTable.clearAllDataForBackupRestore() { writableDatabase.deleteAll(AttachmentTable.TABLE_NAME) + SqlUtil.resetAutoIncrementValue(writableDatabase, AttachmentTable.TABLE_NAME) } fun AttachmentTable.restoreWallpaperAttachment(attachment: Attachment): AttachmentId? { diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt index 719f798996..0ed2e934a4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallLinkTableArchiveExtensions.kt @@ -5,6 +5,8 @@ package org.thoughtcrime.securesms.backup.v2.database +import org.signal.core.util.SqlUtil +import org.signal.core.util.deleteAll import org.signal.core.util.select import org.thoughtcrime.securesms.database.CallLinkTable @@ -16,3 +18,8 @@ fun CallLinkTable.getCallLinksForBackup(): CallLinkArchiveExporter { return CallLinkArchiveExporter(cursor) } + +fun CallLinkTable.clearAllDataForBackup() { + writableDatabase.deleteAll(CallLinkTable.TABLE_NAME) + SqlUtil.resetAutoIncrementValue(writableDatabase, CallLinkTable.TABLE_NAME) +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt index 1c780545d6..5ed0cfe8b2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/CallTableArchiveExtensions.kt @@ -5,6 +5,8 @@ package org.thoughtcrime.securesms.backup.v2.database +import org.signal.core.util.SqlUtil +import org.signal.core.util.deleteAll import org.signal.core.util.select import org.thoughtcrime.securesms.database.CallTable @@ -17,3 +19,8 @@ fun CallTable.getAdhocCallsForBackup(): AdHocCallArchiveExporter { .run() ) } + +fun CallTable.clearAllDataForBackup() { + writableDatabase.deleteAll(CallTable.TABLE_NAME) + SqlUtil.resetAutoIncrementValue(writableDatabase, CallTable.TABLE_NAME) +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt index cdaeb387c2..e4458492c9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/ChatColorsTableArchiveExtensions.kt @@ -5,9 +5,11 @@ package org.thoughtcrime.securesms.backup.v2.database +import org.signal.core.util.SqlUtil import org.signal.core.util.deleteAll import org.thoughtcrime.securesms.database.ChatColorsTable fun ChatColorsTable.clearAllDataForBackupRestore() { writableDatabase.deleteAll(ChatColorsTable.TABLE_NAME) + SqlUtil.resetAutoIncrementValue(writableDatabase, ChatColorsTable.TABLE_NAME) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt index db5232ec1e..ec13aa231f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesArchiveExtensions.kt @@ -5,6 +5,7 @@ package org.thoughtcrime.securesms.backup.v2.database +import org.signal.core.util.SqlUtil import org.signal.core.util.deleteAll import org.signal.core.util.select import org.signal.core.util.withinTransaction @@ -42,4 +43,6 @@ fun DistributionListTables.getMembersForBackup(id: DistributionListId): List