]> nmode's Git Repositories - signal-cli/commitdiff
Canonicalize number before getting/setting contact info
authorAsamK <asamk@gmx.de>
Tue, 21 Jan 2020 21:00:38 +0000 (22:00 +0100)
committerAsamK <asamk@gmx.de>
Tue, 21 Jan 2020 21:08:16 +0000 (22:08 +0100)
src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/commands/UpdateContactCommand.java
src/main/java/org/asamk/signal/manager/Manager.java

index 6fb59303aa3e178c3721e11c8ca1fd1e1b2d8359..30d8f5142da6463033880424b8e0fb4fa9c4b06d 100644 (file)
@@ -6,6 +6,7 @@ import org.freedesktop.dbus.DBusInterface;
 import org.freedesktop.dbus.DBusSignal;
 import org.freedesktop.dbus.exceptions.DBusException;
 import org.whispersystems.signalservice.api.push.exceptions.EncapsulatedExceptions;
 import org.freedesktop.dbus.DBusSignal;
 import org.freedesktop.dbus.exceptions.DBusException;
 import org.whispersystems.signalservice.api.push.exceptions.EncapsulatedExceptions;
+import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
 import java.io.IOException;
 import java.util.List;
 
 import java.io.IOException;
 import java.util.List;
@@ -20,9 +21,9 @@ public interface Signal extends DBusInterface {
 
     void sendGroupMessage(String message, List<String> attachments, byte[] groupId) throws EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException, IOException;
 
 
     void sendGroupMessage(String message, List<String> attachments, byte[] groupId) throws EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException, IOException;
 
-    String getContactName(String number);
+    String getContactName(String number) throws InvalidNumberException;
 
 
-    void setContactName(String number, String name);
+    void setContactName(String number, String name) throws InvalidNumberException;
 
     List<byte[]> getGroupIds();
 
 
     List<byte[]> getGroupIds();
 
index e1afca6948f6bb69b9e95afcf1cd3b37825efcc2..77f38e5e635d8e47f6b0183ca1f54ab44c3eb741 100644 (file)
@@ -4,6 +4,7 @@ import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.manager.Manager;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.manager.Manager;
+import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
 public class UpdateContactCommand implements LocalCommand {
 
 
 public class UpdateContactCommand implements LocalCommand {
 
@@ -27,7 +28,11 @@ public class UpdateContactCommand implements LocalCommand {
         String number = ns.getString("number");
         String name = ns.getString("name");
 
         String number = ns.getString("number");
         String name = ns.getString("name");
 
-        m.setContactName(number, name);
+        try {
+            m.setContactName(number, name);
+        } catch (InvalidNumberException e) {
+            System.out.println("Invalid contact number: " + e.getMessage());
+        }
 
         return 0;
     }
 
         return 0;
     }
index 5e0ad75f4c57140bcf0f316a1dc676c71e165a3e..50da5f23f748c725e6764d5b7e5357eb6273b5da 100644 (file)
@@ -675,8 +675,9 @@ public class Manager implements Signal {
     }
 
     @Override
     }
 
     @Override
-    public String getContactName(String number) {
-        ContactInfo contact = account.getContactStore().getContact(number);
+    public String getContactName(String number) throws InvalidNumberException {
+        String canonicalizedNumber = Utils.canonicalizeNumber(number, username);
+        ContactInfo contact = account.getContactStore().getContact(canonicalizedNumber);
         if (contact == null) {
             return "";
         } else {
         if (contact == null) {
             return "";
         } else {
@@ -685,14 +686,15 @@ public class Manager implements Signal {
     }
 
     @Override
     }
 
     @Override
-    public void setContactName(String number, String name) {
-        ContactInfo contact = account.getContactStore().getContact(number);
+    public void setContactName(String number, String name) throws InvalidNumberException {
+        String canonicalizedNumber = Utils.canonicalizeNumber(number, username);
+        ContactInfo contact = account.getContactStore().getContact(canonicalizedNumber);
         if (contact == null) {
             contact = new ContactInfo();
         if (contact == null) {
             contact = new ContactInfo();
-            contact.number = number;
-            System.err.println("Add contact " + number + " named " + name);
+            contact.number = canonicalizedNumber;
+            System.err.println("Add contact " + canonicalizedNumber + " named " + name);
         } else {
         } else {
-            System.err.println("Updating contact " + number + " name " + contact.name + " -> " + name);
+            System.err.println("Updating contact " + canonicalizedNumber + " name " + contact.name + " -> " + name);
         }
         contact.name = name;
         account.getContactStore().updateContact(contact);
         }
         contact.name = name;
         account.getContactStore().updateContact(contact);