Use known gateways when tel uri clicked

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java | 16 
1 file changed, 7 insertions(+), 9 deletions(-)

Detailed changes

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<String> 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<String> 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;