+ List<SendMessageResult> results = sendMessage(messageBuilder, recipients);
+
+ List<UntrustedIdentityException> untrustedIdentities = new LinkedList<>();
+ List<UnregisteredUserException> unregisteredUsers = new LinkedList<>();
+ List<NetworkFailureException> networkExceptions = new LinkedList<>();
+
+ for (SendMessageResult result : results) {
+ if (result.isUnregisteredFailure()) {
+ unregisteredUsers.add(new UnregisteredUserException(result.getAddress().getNumber(), null));
+ } else if (result.isNetworkFailure()) {
+ networkExceptions.add(new NetworkFailureException(result.getAddress().getNumber(), null));
+ } else if (result.getIdentityFailure() != null) {
+ untrustedIdentities.add(new UntrustedIdentityException("Untrusted", result.getAddress().getNumber(), result.getIdentityFailure().getIdentityKey()));
+ }
+ }
+ if (!untrustedIdentities.isEmpty() || !unregisteredUsers.isEmpty() || !networkExceptions.isEmpty()) {
+ throw new EncapsulatedExceptions(untrustedIdentities, unregisteredUsers, networkExceptions);
+ }
+ }
+
+ private List<SendMessageResult> sendMessage(SignalServiceDataMessage.Builder messageBuilder, Collection<String> recipients)
+ throws IOException {