From c0d7145adafaa375246494e53a16c52ff789cdd0 Mon Sep 17 00:00:00 2001 From: Clark Date: Mon, 10 Jun 2024 14:47:05 -0400 Subject: [PATCH] Add handling for "My Story" import/export. --- .../securesms/backup/v2/BackupRepository.kt | 4 +++ .../DistributionListTablesBackupExtensions.kt | 27 ++++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) 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 f82a2694bc..b7999fdc75 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 @@ -34,6 +34,7 @@ import org.thoughtcrime.securesms.backup.v2.stream.EncryptedBackupReader import org.thoughtcrime.securesms.backup.v2.stream.EncryptedBackupWriter import org.thoughtcrime.securesms.backup.v2.stream.PlainTextBackupReader import org.thoughtcrime.securesms.backup.v2.stream.PlainTextBackupWriter +import org.thoughtcrime.securesms.database.DistributionListTables import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.groups.GroupId @@ -189,6 +190,9 @@ object BackupRepository { SignalDatabase.recipients.setProfileKey(selfId, selfData.profileKey) SignalDatabase.recipients.setProfileSharing(selfId, true) + // Add back my story after clearing data + DistributionListTables.insertInitialDistributionListAtCreationTime(it) + eventTimer.emit("setup") val backupState = BackupState(backupKey) val chatItemInserter: ChatItemImportInserter = ChatItemBackupProcessor.beginImport(backupState) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesBackupExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesBackupExtensions.kt index 3786ae4e3a..3ffdf6d5bd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesBackupExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/database/DistributionListTablesBackupExtensions.kt @@ -91,15 +91,24 @@ fun DistributionListTables.restoreFromBackup(dlistItem: DistributionListItem, ba Log.w(TAG, "Couldn't find some member recipients! Missing backup recipientIds: ${dlist.memberRecipientIds.toSet() - members.toSet()}") } - val dlistId = this.createList( - name = dlist.name, - members = members, - distributionId = DistributionId.from(UuidUtil.fromByteString(dlistItem.distributionId)), - allowsReplies = dlist.allowReplies, - deletionTimestamp = dlistItem.deletionTimestamp ?: 0, - storageId = null, - privacyMode = dlist.privacyMode.toLocalPrivacyMode() - )!! + val distributionId = DistributionId.from(UuidUtil.fromByteString(dlistItem.distributionId)) + val privacyMode = dlist.privacyMode.toLocalPrivacyMode() + + val dlistId = if (distributionId == DistributionId.MY_STORY) { + setPrivacyMode(DistributionListId.MY_STORY, privacyMode) + members.forEach { addMemberToList(DistributionListId.MY_STORY, privacyMode, it) } + DistributionListId.MY_STORY + } else { + createList( + name = dlist.name, + members = members, + distributionId = distributionId, + allowsReplies = dlist.allowReplies, + deletionTimestamp = dlistItem.deletionTimestamp ?: 0, + storageId = null, + privacyMode = privacyMode + )!! + } return SignalDatabase.distributionLists.getRecipientId(dlistId)!! }