Ensure ACI/PNI are associated after processing a PNI promotion message.
This commit is contained in:
parent
15f1201a76
commit
4a0abbbee7
2 changed files with 13 additions and 3 deletions
|
@ -7,7 +7,6 @@ import android.text.TextUtils
|
||||||
import androidx.annotation.WorkerThread
|
import androidx.annotation.WorkerThread
|
||||||
import androidx.core.content.contentValuesOf
|
import androidx.core.content.contentValuesOf
|
||||||
import org.intellij.lang.annotations.Language
|
import org.intellij.lang.annotations.Language
|
||||||
import org.signal.core.util.SetUtil
|
|
||||||
import org.signal.core.util.SqlUtil
|
import org.signal.core.util.SqlUtil
|
||||||
import org.signal.core.util.SqlUtil.appendArg
|
import org.signal.core.util.SqlUtil.appendArg
|
||||||
import org.signal.core.util.SqlUtil.buildArgs
|
import org.signal.core.util.SqlUtil.buildArgs
|
||||||
|
@ -36,14 +35,12 @@ import org.signal.storageservice.protos.groups.local.DecryptedGroup
|
||||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchSortOrder
|
import org.thoughtcrime.securesms.contacts.paged.ContactSearchSortOrder
|
||||||
import org.thoughtcrime.securesms.contacts.paged.collections.ContactSearchIterator
|
import org.thoughtcrime.securesms.contacts.paged.collections.ContactSearchIterator
|
||||||
import org.thoughtcrime.securesms.crypto.SenderKeyUtil
|
import org.thoughtcrime.securesms.crypto.SenderKeyUtil
|
||||||
import org.thoughtcrime.securesms.database.SignalDatabase.Companion.messages
|
|
||||||
import org.thoughtcrime.securesms.database.SignalDatabase.Companion.recipients
|
import org.thoughtcrime.securesms.database.SignalDatabase.Companion.recipients
|
||||||
import org.thoughtcrime.securesms.database.model.GroupRecord
|
import org.thoughtcrime.securesms.database.model.GroupRecord
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||||
import org.thoughtcrime.securesms.groups.BadGroupIdException
|
import org.thoughtcrime.securesms.groups.BadGroupIdException
|
||||||
import org.thoughtcrime.securesms.groups.GroupId
|
import org.thoughtcrime.securesms.groups.GroupId
|
||||||
import org.thoughtcrime.securesms.groups.GroupId.Push
|
import org.thoughtcrime.securesms.groups.GroupId.Push
|
||||||
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange
|
|
||||||
import org.thoughtcrime.securesms.groups.v2.processing.GroupsV2StateProcessor
|
import org.thoughtcrime.securesms.groups.v2.processing.GroupsV2StateProcessor
|
||||||
import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob
|
import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
|
@ -60,6 +57,7 @@ import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPoin
|
||||||
import org.whispersystems.signalservice.api.push.DistributionId
|
import org.whispersystems.signalservice.api.push.DistributionId
|
||||||
import org.whispersystems.signalservice.api.push.ServiceId
|
import org.whispersystems.signalservice.api.push.ServiceId
|
||||||
import org.whispersystems.signalservice.api.push.ServiceId.ACI
|
import org.whispersystems.signalservice.api.push.ServiceId.ACI
|
||||||
|
import org.whispersystems.signalservice.api.push.ServiceId.PNI
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
import java.security.SecureRandom
|
import java.security.SecureRandom
|
||||||
import java.util.Optional
|
import java.util.Optional
|
||||||
|
@ -867,6 +865,14 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT
|
||||||
Log.i(TAG, removed.size.toString() + " members were removed from group " + groupId + ". Rotating the DistributionId " + distributionId)
|
Log.i(TAG, removed.size.toString() + " members were removed from group " + groupId + ". Rotating the DistributionId " + distributionId)
|
||||||
SenderKeyUtil.rotateOurKey(distributionId)
|
SenderKeyUtil.rotateOurKey(distributionId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
change.promotePendingPniAciMembers.forEach { member ->
|
||||||
|
recipients.getAndPossiblyMergePnpVerified(
|
||||||
|
aci = ACI.parseOrNull(member.aciBytes),
|
||||||
|
pni = PNI.parseOrNull(member.pniBytes),
|
||||||
|
e164 = null
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
writableDatabase.withinTransaction { database ->
|
writableDatabase.withinTransaction { database ->
|
||||||
|
|
|
@ -197,6 +197,10 @@ sealed class ServiceId(val libSignalServiceId: LibSignalServiceId) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Parses a [ByteString] as a PNI, regardless if the `PNI:` prefix is present or not. Only use this if you are certain that what you're reading is a PNI. */
|
||||||
|
@JvmStatic
|
||||||
|
fun parseOrNull(bytes: ByteString): PNI? = parseOrNull(bytes.toByteArray())
|
||||||
|
|
||||||
/** Parses a string as a PNI, regardless if the `PNI:` prefix is present or not. Only use this if you are certain that what you're reading is a PNI. */
|
/** Parses a string as a PNI, regardless if the `PNI:` prefix is present or not. Only use this if you are certain that what you're reading is a PNI. */
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Throws(IllegalArgumentException::class)
|
@Throws(IllegalArgumentException::class)
|
||||||
|
|
Loading…
Add table
Reference in a new issue