Fetch jabber:iq:gateway prompt

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 18 
src/main/java/eu/siacs/conversations/xmpp/OnGatewayPromptResult.java     |  7 
2 files changed, 25 insertions(+)

Detailed changes

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -145,6 +145,7 @@ import eu.siacs.conversations.xml.Namespace;
 import eu.siacs.conversations.xmpp.Jid;
 import eu.siacs.conversations.xmpp.OnBindListener;
 import eu.siacs.conversations.xmpp.OnContactStatusChanged;
+import eu.siacs.conversations.xmpp.OnGatewayPromptResult;
 import eu.siacs.conversations.xmpp.OnIqPacketReceived;
 import eu.siacs.conversations.xmpp.OnKeyStatusUpdated;
 import eu.siacs.conversations.xmpp.OnMessageAcknowledged;
@@ -4655,6 +4656,23 @@ public class XmppConnectionService extends Service {
         }
     }
 
+    public void fetchGatewayPrompt(Account account, final Jid jid, final OnGatewayPromptResult callback) {
+        IqPacket request = new IqPacket(IqPacket.TYPE.GET);
+        request.setTo(jid);
+        request.query("jabber:iq:gateway");
+        sendIqPacket(account, request, new OnIqPacketReceived() {
+            @Override
+            public void onIqPacketReceived(Account account, IqPacket packet) {
+                if (packet.getType() == IqPacket.TYPE.RESULT) {
+                    callback.onGatewayPromptResult(packet.query().findChildContent("prompt"), null);
+                } else {
+                    Element error = packet.findChild("error");
+                    callback.onGatewayPromptResult(null, error == null ? null : error.findChildContent("text"));
+                }
+            }
+        });
+    }
+
     public void fetchCaps(Account account, final Jid jid, final Presence presence) {
         final Pair<String, String> key = new Pair<>(presence.getHash(), presence.getVer());
         final ServiceDiscoveryResult disco = getCachedServiceDiscoveryResult(key);