kopia lustrzana https://github.com/ryukoposting/Signal-Android
Remove possible transaction from identity cache read.
rodzic
f7adf2ee5a
commit
bdba048bc4
|
@ -29,6 +29,7 @@ import org.signal.libsignal.protocol.IdentityKey;
|
|||
import org.signal.libsignal.protocol.InvalidKeyException;
|
||||
import org.thoughtcrime.securesms.database.model.IdentityRecord;
|
||||
import org.thoughtcrime.securesms.database.model.IdentityStoreRecord;
|
||||
import org.thoughtcrime.securesms.database.model.RecipientRecord;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
|
@ -37,10 +38,12 @@ import org.thoughtcrime.securesms.util.Base64;
|
|||
import org.signal.core.util.CursorUtil;
|
||||
import org.thoughtcrime.securesms.util.IdentityUtil;
|
||||
import org.signal.core.util.SqlUtil;
|
||||
import org.whispersystems.signalservice.api.push.ServiceId;
|
||||
import org.whispersystems.signalservice.api.util.UuidUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class IdentityDatabase extends Database {
|
||||
|
||||
|
@ -110,8 +113,10 @@ public class IdentityDatabase extends Database {
|
|||
timestamp,
|
||||
nonblockingApproval);
|
||||
} else if (UuidUtil.isUuid(addressName)) {
|
||||
if (SignalDatabase.recipients().containsPhoneOrUuid(addressName)) {
|
||||
Recipient recipient = Recipient.external(context, addressName);
|
||||
Optional<RecipientId> byServiceId = SignalDatabase.recipients().getByServiceId(ServiceId.parseOrThrow(addressName));
|
||||
|
||||
if (byServiceId.isPresent()) {
|
||||
Recipient recipient = Recipient.resolved(byServiceId.get());
|
||||
|
||||
if (recipient.hasE164() && !UuidUtil.isUuid(recipient.requireE164())) {
|
||||
Log.i(TAG, "Could not find identity for UUID. Attempting E164.");
|
||||
|
|
|
@ -396,20 +396,10 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) :
|
|||
"""
|
||||
}
|
||||
|
||||
fun containsPhoneOrUuid(id: String): Boolean {
|
||||
val query = "$SERVICE_ID = ? OR $PHONE = ?"
|
||||
val args = arrayOf(id, id)
|
||||
readableDatabase.query(TABLE_NAME, arrayOf(ID), query, args, null, null, null).use { cursor -> return cursor != null && cursor.moveToFirst() }
|
||||
}
|
||||
|
||||
fun getByE164(e164: String): Optional<RecipientId> {
|
||||
return getByColumn(PHONE, e164)
|
||||
}
|
||||
|
||||
fun getByEmail(email: String): Optional<RecipientId> {
|
||||
return getByColumn(EMAIL, email)
|
||||
}
|
||||
|
||||
fun getByGroupId(groupId: GroupId): Optional<RecipientId> {
|
||||
return getByColumn(GROUP_ID, groupId.toString())
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue