]> nmode's Git Repositories - signal-cli/commitdiff
implement Dbus isRegistered() methods (#729)
authorJohn Freed <okgithub@johnfreed.com>
Sun, 26 Sep 2021 18:09:57 +0000 (20:09 +0200)
committerGitHub <noreply@github.com>
Sun, 26 Sep 2021 18:09:57 +0000 (20:09 +0200)
* implement Dbus isRegistered() methods

isRegistered(number<s>) returns a boolean

isRegistered(numbers<as>) returns an array of Booleans

* Dbus isRegistered() methods

restore isRegistered() and respond to other requests by AsamK

man/signal-cli-dbus.5.adoc
src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index 5d65c48fc64b77e7825b544cc231c8cc11c2f937..6b5d1a8607c2b6652776b4b98e1dc186acb425fb 100755 (executable)
@@ -322,8 +322,15 @@ Exception: Failure
 version() -> version<s>::
 * version : Version string of signal-cli
 
 version() -> version<s>::
 * version : Version string of signal-cli
 
-isRegistred -> result<b>::
-* result : Currently always returns 1=true
+isRegistered() -> result<b>::
+isRegistered(number<s>) -> result<b>::
+isRegistered(numbers<as>) -> results<ab>::
+* number  : Phone number
+* numbers : String array of phone numbers
+* result  : true=number is registered, false=number is not registered
+* results : Boolean array of results
+
+Exception: InvalidNumber for an incorrectly formatted phone number. For unknown numbers, false is returned, but no exception is raised. If no number is given, returns whether you are registered (presumably true).
 
 addDevice(deviceUri<s>) -> <>::
 * deviceUri : URI in the form of tsdevice:/?uuid=... Normally received from Signal desktop or smartphone app
 
 addDevice(deviceUri<s>) -> <>::
 * deviceUri : URI in the form of tsdevice:/?uuid=... Normally received from Signal desktop or smartphone app
index 55585c0d829697d0deb5dce1df20f4eca9c756af..3bfeb5bdf0f6b56189068990ba0870f3cad66219 100644 (file)
@@ -87,7 +87,11 @@ public interface Signal extends DBusInterface {
             byte[] groupId, String name, List<String> members, String avatar
     ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.GroupNotFound, Error.InvalidGroupId;
 
             byte[] groupId, String name, List<String> members, String avatar
     ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.GroupNotFound, Error.InvalidGroupId;
 
-    boolean isRegistered();
+    boolean isRegistered() throws Error.Failure, Error.InvalidNumber;
+
+    boolean isRegistered(String number) throws Error.Failure, Error.InvalidNumber;
+
+    List<Boolean> isRegistered(List<String> numbers) throws Error.Failure, Error.InvalidNumber;
 
     void addDevice(String uri) throws Error.InvalidUri;
 
 
     void addDevice(String uri) throws Error.InvalidUri;
 
index 7e78d85ba51a98430d5d808f3b4e64ca1d9171f6..82cd8f8d87c32e219053ba932cc37f2068007eb6 100644 (file)
@@ -41,6 +41,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.UUID;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -467,7 +468,33 @@ public class DbusSignalImpl implements Signal {
 
     @Override
     public boolean isRegistered() {
 
     @Override
     public boolean isRegistered() {
-        return true;
+        var result = isRegistered(List.of(m.getUsername()));
+        return result.get(0);
+    }
+
+    @Override
+    public boolean isRegistered(String number) {
+        var result = isRegistered(List.of(number));
+        return result.get(0);
+    }
+
+    @Override
+    public List<Boolean> isRegistered(List<String> numbers) {
+        var results = new ArrayList<Boolean> ();
+        Map<String, Pair<String, UUID>> registered;
+        if (numbers.isEmpty()) {
+            return results;
+        }
+        try {
+            registered = m.areUsersRegistered(new HashSet<String>(numbers));
+        } catch (IOException e) {
+            throw new Error.Failure(e.getMessage());
+        }
+        for (String number : numbers) {
+            UUID uuid = registered.get(number).second();
+            results.add(uuid != null);
+        }
+        return results;
     }
 
     @Override
     }
 
     @Override