diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java index 2693fc07d..be792eb4a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java @@ -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 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."); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt index 32771d66d..a64a7bfdc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt @@ -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 { return getByColumn(PHONE, e164) } - fun getByEmail(email: String): Optional { - return getByColumn(EMAIL, email) - } - fun getByGroupId(groupId: GroupId): Optional { return getByColumn(GROUP_ID, groupId.toString()) }