Add handling for "My Story" import/export.

This commit is contained in:
Clark
2024-06-10 14:47:05 -04:00
committed by Greyson Parrelli
parent f94c007af8
commit c0d7145ada
2 changed files with 22 additions and 9 deletions

View File

@@ -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)

View File

@@ -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)!!
}