mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-23 18:30:20 +01:00
Ensure all SignalServiceAddresses have UUIDs.
This commit is contained in:
committed by
Alex Hart
parent
0ab2100fa5
commit
642d1984c4
@@ -74,13 +74,12 @@ public final class ProfileUtil {
|
||||
@NonNull SignalServiceProfile.RequestType requestType,
|
||||
@NonNull ProfileService profileService)
|
||||
{
|
||||
SignalServiceAddress address = toSignalServiceAddress(context, recipient);
|
||||
Optional<UnidentifiedAccess> unidentifiedAccess = getUnidentifiedAccess(context, recipient);
|
||||
Optional<ProfileKey> profileKey = ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey());
|
||||
|
||||
return profileService.getProfile(address, profileKey, unidentifiedAccess, requestType)
|
||||
.map(p -> new Pair<>(recipient, p))
|
||||
.onErrorReturn(t -> new Pair<>(recipient, ServiceResponse.forUnknownError(t)));
|
||||
return Single.fromCallable(() -> toSignalServiceAddress(context, recipient))
|
||||
.flatMap(address -> profileService.getProfile(address, profileKey, unidentifiedAccess, requestType).map(p -> new Pair<>(recipient, p)))
|
||||
.onErrorReturn(t -> new Pair<>(recipient, ServiceResponse.forUnknownError(t)));
|
||||
}
|
||||
|
||||
public static @Nullable String decryptString(@NonNull ProfileKey profileKey, @Nullable byte[] encryptedString)
|
||||
@@ -267,11 +266,11 @@ public final class ProfileUtil {
|
||||
return Optional.absent();
|
||||
}
|
||||
|
||||
private static @NonNull SignalServiceAddress toSignalServiceAddress(@NonNull Context context, @NonNull Recipient recipient) {
|
||||
private static @NonNull SignalServiceAddress toSignalServiceAddress(@NonNull Context context, @NonNull Recipient recipient) throws IOException {
|
||||
if (recipient.getRegistered() == RecipientDatabase.RegisteredState.NOT_REGISTERED) {
|
||||
return new SignalServiceAddress(recipient.getUuid().orNull(), recipient.getE164().orNull());
|
||||
} else {
|
||||
return RecipientUtil.toSignalServiceAddressBestEffort(context, recipient);
|
||||
return RecipientUtil.toSignalServiceAddress(context, recipient);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@ class RecipientAccessList(private val recipients: List<Recipient>) : List<Recipi
|
||||
}
|
||||
|
||||
fun requireByAddress(address: SignalServiceAddress): Recipient {
|
||||
if (address.uuid.isPresent && byUuid.containsKey(address.uuid.get())) {
|
||||
return byUuid.get(address.uuid.get())!!
|
||||
if (byUuid.containsKey(address.uuid)) {
|
||||
return byUuid.get(address.uuid)!!
|
||||
} else if (address.number.isPresent && byE164.containsKey(address.number.get())) {
|
||||
return byE164.get(address.number.get())!!
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user