Fix storage sync bug for distribution lists.

This commit is contained in:
Cody Henthorne
2022-05-02 11:00:38 -04:00
committed by Greyson Parrelli
parent 8a2f89b4f6
commit f10d5651f0
2 changed files with 8 additions and 5 deletions

View File

@@ -183,7 +183,8 @@ class DistributionListDatabase constructor(context: Context?, databaseHelper: Si
members: List<RecipientId>,
distributionId: DistributionId = DistributionId.from(UUID.randomUUID()),
allowsReplies: Boolean = true,
deletionTimestamp: Long = 0L
deletionTimestamp: Long = 0L,
storageId: ByteArray? = null
): DistributionListId? {
val db = writableDatabase
@@ -203,7 +204,7 @@ class DistributionListDatabase constructor(context: Context?, databaseHelper: Si
return null
}
val recipientId = SignalDatabase.recipients.getOrInsertFromDistributionListId(DistributionListId.from(id))
val recipientId = SignalDatabase.recipients.getOrInsertFromDistributionListId(DistributionListId.from(id), storageId)
writableDatabase.update(
ListTable.TABLE_NAME,
ContentValues().apply { put(ListTable.RECIPIENT_ID, recipientId.serialize()) },
@@ -422,7 +423,8 @@ class DistributionListDatabase constructor(context: Context?, databaseHelper: Si
members = insert.recipients.map(RecipientId::from),
distributionId = distributionId,
allowsReplies = insert.allowsReplies(),
deletionTimestamp = insert.deletedAtTimestamp
deletionTimestamp = insert.deletedAtTimestamp,
storageId = insert.id.raw
)
}

View File

@@ -614,14 +614,15 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) :
return getOrInsertByColumn(EMAIL, email).recipientId
}
fun getOrInsertFromDistributionListId(distributionListId: DistributionListId): RecipientId {
@JvmOverloads
fun getOrInsertFromDistributionListId(distributionListId: DistributionListId, storageId: ByteArray? = null): RecipientId {
return getOrInsertByColumn(
DISTRIBUTION_LIST_ID,
distributionListId.serialize(),
ContentValues().apply {
put(GROUP_TYPE, GroupType.DISTRIBUTION_LIST.id)
put(DISTRIBUTION_LIST_ID, distributionListId.serialize())
put(STORAGE_SERVICE_ID, Base64.encodeBytes(StorageSyncHelper.generateKey()))
put(STORAGE_SERVICE_ID, Base64.encodeBytes(storageId ?: StorageSyncHelper.generateKey()))
put(PROFILE_SHARING, 1)
}
).recipientId