Parse phone numbers using local settings before asking gateway

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java | 15 +++++++
1 file changed, 15 insertions(+)

Detailed changes

src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java 🔗

@@ -29,6 +29,8 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+
+import io.michaelrocks.libphonenumber.android.NumberParseException;
 import org.solovyev.android.views.llm.LinearLayoutManager;
 
 import eu.siacs.conversations.Config;
@@ -42,6 +44,7 @@ import eu.siacs.conversations.entities.ServiceDiscoveryResult;
 import eu.siacs.conversations.ui.adapter.KnownHostsAdapter;
 import eu.siacs.conversations.ui.interfaces.OnBackendConnected;
 import eu.siacs.conversations.ui.util.DelayedHintHelper;
+import eu.siacs.conversations.utils.PhoneNumberUtilWrapper;
 import eu.siacs.conversations.xmpp.Jid;
 import eu.siacs.conversations.xmpp.OnGatewayResult;
 
@@ -265,6 +268,14 @@ public class EnterJidDialog extends DialogFragment implements OnBackendConnected
         };
 
         Pair<String,Pair<Jid,Presence>> p = gatewayListAdapter.getSelected();
+        final String type = gatewayListAdapter.getSelectedType();
+
+        // Resolve based on local settings before submission
+        if (type.equals("pstn") || type.equals("sms")) {
+            try {
+                binding.jid.setText(PhoneNumberUtilWrapper.normalize(getActivity(), binding.jid.getText().toString()));
+            } catch (NumberParseException | NullPointerException e) { }
+        }
 
         if (p == null) {
             finish.onGatewayResult(binding.jid.getText().toString(), null);
@@ -472,6 +483,10 @@ public class EnterJidDialog extends DialogFragment implements OnBackendConnected
             return null;
         }
 
+        public String getSelectedType() {
+            return getType(selected);
+        }
+
         public Pair<String, Pair<Jid,Presence>> getSelected() {
             if(this.selected == 0) {
                 return null; // No gateway, just use direct JID entry