Fix potential sqlite conflict in dlist on recipient remap.

This commit is contained in:
Greyson Parrelli
2024-05-17 11:57:45 -04:00
committed by Cody Henthorne
parent 537fc0ef5c
commit 689ee243aa

View File

@@ -15,6 +15,7 @@ import org.signal.core.util.requireNonNullString
import org.signal.core.util.requireObject
import org.signal.core.util.requireString
import org.signal.core.util.select
import org.signal.core.util.update
import org.signal.core.util.withinTransaction
import org.thoughtcrime.securesms.database.model.DistributionListId
import org.thoughtcrime.securesms.database.model.DistributionListPrivacyData
@@ -524,10 +525,11 @@ class DistributionListTables constructor(context: Context?, databaseHelper: Sign
}
override fun remapRecipient(oldId: RecipientId, newId: RecipientId) {
val values = ContentValues().apply {
put(MembershipTable.RECIPIENT_ID, newId.serialize())
}
writableDatabase.update(MembershipTable.TABLE_NAME, values, "${MembershipTable.RECIPIENT_ID} = ?", SqlUtil.buildArgs(oldId))
writableDatabase
.update(MembershipTable.TABLE_NAME)
.values(MembershipTable.RECIPIENT_ID to newId.serialize())
.where("${MembershipTable.RECIPIENT_ID} = ?", oldId)
.run(SQLiteDatabase.CONFLICT_REPLACE)
}
fun deleteList(distributionListId: DistributionListId, deletionTimestamp: Long = System.currentTimeMillis()) {