diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index cf1e8e5fee728f50981b84ad5d9719ecbaa25e6b..ed374e1e9be8e8c221aefb250cee9a39363deb13 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -83,6 +83,7 @@ import java.util.Set; import java.util.TreeMap; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; +import java.util.stream.Stream; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; @@ -1017,15 +1018,12 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio return false; } - Set gateways = new HashSet<>(); - for (Account account : (acct == null ? xmppConnectionService.getAccounts() : List.of(acct))) { - for (Contact contact : account.getRoster().getContacts()) { - if (contact.getPresences().anyIdentity("gateway", "pstn") || contact.getPresences().anyIdentity("gateway", "sms")) { - if (acct == null) acct = account; - gateways.add(contact.getJid().asBareJid().toEscapedString()); - } - } - } + Set gateways = (acct == null ? xmppConnectionService.getAccounts().stream() : List.of(acct).stream()).flatMap(account -> + Stream.concat( + account.getGateways("pstn").stream(), + account.getGateways("sms").stream() + ) + ).map(a -> a.getJid().asBareJid().toString()).collect(Collectors.toSet()); for (String gateway : gateways) { if (onXmppUriClicked(Uri.parse("xmpp:" + tel + "@" + gateway))) return true;