Do not process story records if capability doesn't support it.

This commit is contained in:
Alex Hart
2022-04-04 13:14:28 -03:00
committed by Cody Henthorne
parent 47760867d5
commit 91c581b475
3 changed files with 20 additions and 4 deletions

View File

@@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.util.Base64
import org.whispersystems.signalservice.api.push.DistributionId
import org.whispersystems.signalservice.api.storage.SignalStoryDistributionListRecord
import org.whispersystems.signalservice.api.util.UuidUtil
import java.lang.AssertionError
import java.util.UUID
/**
@@ -411,10 +412,15 @@ class DistributionListDatabase constructor(context: Context?, databaseHelper: Si
}
fun applyStorageSyncStoryDistributionListInsert(insert: SignalStoryDistributionListRecord) {
val distributionId = DistributionId.from(UuidUtil.parseOrThrow(insert.identifier))
if (distributionId == DistributionId.MY_STORY) {
throw AssertionError("Should never try to insert My Story")
}
createList(
name = insert.name,
members = insert.recipients.map(RecipientId::from),
distributionId = DistributionId.from(UuidUtil.parseOrThrow(insert.identifier)),
distributionId = distributionId,
allowsReplies = insert.allowsReplies(),
deletionTimestamp = insert.deletedAtTimestamp
)

View File

@@ -1068,14 +1068,19 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) :
* @return All storage IDs for synced records, excluding the ones that need to be deleted.
*/
fun getContactStorageSyncIdsMap(): Map<RecipientId, StorageId> {
val (inPart, args) = if (Recipient.self().storiesCapability == Recipient.Capability.SUPPORTED) {
"(?, ?)" to SqlUtil.buildArgs(GroupType.NONE.id, Recipient.self().id, GroupType.SIGNAL_V1.id, GroupType.DISTRIBUTION_LIST.id)
} else {
"(?)" to SqlUtil.buildArgs(GroupType.NONE.id, Recipient.self().id, GroupType.SIGNAL_V1.id)
}
val query = """
$STORAGE_SERVICE_ID NOT NULL AND (
($GROUP_TYPE = ? AND $SERVICE_ID NOT NULL AND $ID != ?)
OR
$GROUP_TYPE IN (?, ?)
$GROUP_TYPE IN $inPart
)
""".trimIndent()
val args = SqlUtil.buildArgs(GroupType.NONE.id, Recipient.self().id, GroupType.SIGNAL_V1.id, GroupType.DISTRIBUTION_LIST.id)
val out: MutableMap<RecipientId, StorageId> = HashMap()
readableDatabase.query(TABLE_NAME, arrayOf(ID, STORAGE_SERVICE_ID, GROUP_TYPE), query, args, null, null, null).use { cursor ->