import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
import org.whispersystems.signalservice.api.messages.multidevice.ViewOnceOpenMessage;
import org.whispersystems.signalservice.api.messages.multidevice.ViewedMessage;
+import org.whispersystems.signalservice.api.push.ServiceId;
import java.io.File;
import java.io.IOException;
final AttachmentFileProvider fileProvider,
Exception exception
) {
- final var source = !envelope.isUnidentifiedSender() && envelope.hasSourceServiceId()
- ? recipientResolver.resolveRecipient(envelope.getSourceAddress())
+ final var serviceId = envelope.getSourceServiceId().map(ServiceId::parseOrNull).orElse(null);
+ final var source = !envelope.isUnidentifiedSender() && serviceId != null
+ ? recipientResolver.resolveRecipient(serviceId)
: envelope.isUnidentifiedSender() && content != null
? recipientResolver.resolveRecipient(content.getSender())
: exception instanceof ProtocolException e
final var actions = new ArrayList<HandleAction>();
SignalServiceContent content = null;
Exception exception = null;
- try {
- if (envelope.hasSourceServiceId()) {
+ envelope.getSourceServiceId().map(ServiceId::parseOrNull)
// Store uuid if we don't have it already
// uuid in envelope is sent by server
- account.getRecipientTrustedResolver().resolveRecipientTrusted(envelope.getSourceAddress());
- }
- } catch (Exception e) {
- exception = e;
- }
+ .ifPresent(serviceId -> account.getRecipientResolver().resolveRecipient(serviceId));
if (!envelope.isReceipt()) {
try {
final var cipherResult = dependencies.getCipher()
sender,
destination == null
? null
- : new DeviceAddress(context.getRecipientHelper().resolveRecipient(destination),
+ : new DeviceAddress(account.getRecipientResolver().resolveRecipient(destination),
destination.getServiceId(),
0),
ignoreAttachments));
final var blockedListMessage = syncMessage.getBlockedList().get();
for (var address : blockedListMessage.getAddresses()) {
context.getContactHelper()
- .setContactBlocked(context.getRecipientHelper().resolveRecipient(address), true);
+ .setContactBlocked(account.getRecipientResolver().resolveRecipient(address), true);
}
for (var groupId : blockedListMessage.getGroupIds()
.stream()
if (source == null) {
return false;
}
- final var recipientId = context.getRecipientHelper().resolveRecipient(source);
+ final var recipientId = account.getRecipientResolver().resolveRecipient(source);
if (context.getContactHelper().isContactBlocked(recipientId)) {
return true;
}
final var message = content.getDataMessage().orElse(null);
- final var recipientId = context.getRecipientHelper().resolveRecipient(source);
+ final var recipientId = account.getRecipientResolver().resolveRecipient(source);
if (!group.isMember(recipientId) && !(
group.isPendingMember(recipientId) && message != null && message.isGroupV2Update()
)) {
}
if (groupInfo.getMembers().isPresent()) {
+ final var recipientResolver = account.getRecipientResolver();
groupV1.addMembers(groupInfo.getMembers()
.get()
.stream()
- .map(context.getRecipientHelper()::resolveRecipient)
+ .map(recipientResolver::resolveRecipient)
.collect(Collectors.toSet()));
}
}
private SignalServiceAddress getSenderAddress(SignalServiceEnvelope envelope, SignalServiceContent content) {
- if (!envelope.isUnidentifiedSender() && envelope.hasSourceServiceId()) {
- return envelope.getSourceAddress();
+ final var serviceId = envelope.getSourceServiceId().map(ServiceId::parseOrNull).orElse(null);
+ if (!envelope.isUnidentifiedSender() && serviceId != null) {
+ return new SignalServiceAddress(serviceId);
} else if (content != null) {
return content.getSender();
} else {
}
private DeviceAddress getSender(SignalServiceEnvelope envelope, SignalServiceContent content) {
- if (!envelope.isUnidentifiedSender() && envelope.hasSourceServiceId()) {
- return new DeviceAddress(context.getRecipientHelper().resolveRecipient(envelope.getSourceAddress()),
- envelope.getSourceAddress().getServiceId(),
+ final var serviceId = envelope.getSourceServiceId().map(ServiceId::parseOrNull).orElse(null);
+ if (!envelope.isUnidentifiedSender() && serviceId != null) {
+ return new DeviceAddress(account.getRecipientResolver().resolveRecipient(serviceId),
+ serviceId,
envelope.getSourceDevice());
} else {
- return new DeviceAddress(context.getRecipientHelper().resolveRecipient(content.getSender()),
+ return new DeviceAddress(account.getRecipientResolver().resolveRecipient(content.getSender()),
content.getSender().getServiceId(),
content.getSenderDevice());
}
return new DeviceAddress(account.getSelfRecipientId(), account.getAci(), account.getDeviceId());
}
final var address = addressOptional.get();
- return new DeviceAddress(context.getRecipientHelper().resolveRecipient(address),
+ return new DeviceAddress(account.getRecipientResolver().resolveRecipient(address),
address.getServiceId(),
account.getDeviceId());
}
import org.slf4j.LoggerFactory;
import org.whispersystems.signalservice.api.SignalWebSocket;
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
+import org.whispersystems.signalservice.api.push.ServiceId;
import org.whispersystems.signalservice.api.push.ServiceId.ACI;
import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState;
import org.whispersystems.signalservice.api.websocket.WebSocketUnavailableException;
for (final var it : batch) {
SignalServiceEnvelope envelope1 = new SignalServiceEnvelope(it.getEnvelope(),
it.getServerDeliveredTimestamp());
- final var recipientId = envelope1.hasSourceServiceId() ? account.getRecipientResolver()
- .resolveRecipient(envelope1.getSourceAddress()) : null;
+ final var recipientId = envelope1.getSourceServiceId()
+ .map(ServiceId::parseOrNull)
+ .map(s -> account.getRecipientResolver().resolveRecipient(s))
+ .orElse(null);
logger.trace("Storing new message from {}", recipientId);
// store message on disk, before acknowledging receipt to the server
cachedMessage[0] = account.getMessageCache().cacheMessage(envelope1, recipientId);
if (exception instanceof UntrustedIdentityException) {
logger.debug("Keeping message with untrusted identity in message cache");
final var address = ((UntrustedIdentityException) exception).getSender();
- if (!envelope.hasSourceServiceId() && address.uuid().isPresent()) {
+ if (envelope.getSourceServiceId().isEmpty() && address.uuid().isPresent()) {
final var recipientId = account.getRecipientResolver()
.resolveRecipient(ACI.from(address.uuid().get()));
try {
cachedMessage.delete();
return null;
}
- if (!envelope.hasSourceServiceId()) {
+ if (envelope.getSourceServiceId().isEmpty()) {
final var identifier = ((UntrustedIdentityException) exception).getSender();
final var recipientId = account.getRecipientResolver()
.resolveRecipient(new RecipientAddress(identifier));
.toSignalServiceAddress();
}
- public RecipientId resolveRecipient(final SignalServiceAddress address) {
- return account.getRecipientResolver().resolveRecipient(address);
- }
-
public Set<RecipientId> resolveRecipients(Collection<RecipientIdentifier.Single> recipients) throws UnregisteredRecipientException {
final var recipientIds = new HashSet<RecipientId>(recipients.size());
for (var number : recipients) {
senderKeyTargets = Set.of();
} else {
results.stream().filter(SendMessageResult::isSuccess).forEach(allResults::add);
+ final var recipientResolver = account.getRecipientResolver();
final var failedTargets = results.stream()
.filter(r -> !r.isSuccess())
- .map(r -> context.getRecipientHelper().resolveRecipient(r.getAddress()))
+ .map(r -> recipientResolver.resolveRecipient(r.getAddress()))
.toList();
if (!failedTargets.isEmpty()) {
senderKeyTargets = new HashSet<>(senderKeyTargets);
private void handleSendMessageResult(final SendMessageResult r) {
if (r.isSuccess() && !r.getSuccess().isUnidentified()) {
- final var recipientId = context.getRecipientHelper().resolveRecipient(r.getAddress());
+ final var recipientId = account.getRecipientResolver().resolveRecipient(r.getAddress());
final var profile = account.getProfileStore().getProfile(recipientId);
if (profile != null && (
profile.getUnidentifiedAccessMode() == Profile.UnidentifiedAccessMode.ENABLED
}
}
if (r.isUnregisteredFailure()) {
- final var recipientId = context.getRecipientHelper().resolveRecipient(r.getAddress());
+ final var recipientId = account.getRecipientResolver().resolveRecipient(r.getAddress());
final var profile = account.getProfileStore().getProfile(recipientId);
if (profile != null && (
profile.getUnidentifiedAccessMode() == Profile.UnidentifiedAccessMode.ENABLED
}
}
if (r.getIdentityFailure() != null) {
- final var recipientId = context.getRecipientHelper().resolveRecipient(r.getAddress());
+ final var recipientId = account.getRecipientResolver().resolveRecipient(r.getAddress());
context.getIdentityHelper()
.handleIdentityFailure(recipientId, r.getAddress().getServiceId(), r.getIdentityFailure());
}