]> nmode's Git Repositories - signal-cli/commitdiff
Add method to list linked devices
authorAsamK <asamk@gmx.de>
Sat, 16 Apr 2016 12:36:56 +0000 (14:36 +0200)
committerAsamK <asamk@gmx.de>
Sat, 16 Apr 2016 12:36:56 +0000 (14:36 +0200)
src/main/java/org/asamk/signal/Main.java
src/main/java/org/asamk/signal/Manager.java

index 9ffcb6608293078e0795d04201cb3386c5ab90fe..a6d36d0f248e7880478dfe3c32baf43d30945ed6 100644 (file)
@@ -29,6 +29,7 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.whispersystems.libsignal.InvalidKeyException;
 import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException;
 import org.whispersystems.signalservice.api.messages.*;
+import org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo;
 import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage;
 import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage;
 import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
@@ -201,6 +202,28 @@ public class Main {
                         System.exit(2);
                     }
                     break;
+                case "listDevices":
+                    if (dBusConn != null) {
+                        System.err.println("listDevices is not yet implemented via dbus");
+                        System.exit(1);
+                    }
+                    if (!m.isRegistered()) {
+                        System.err.println("User is not registered.");
+                        System.exit(1);
+                    }
+                    try {
+                        List<DeviceInfo> devices = m.getLinkedDevices();
+                        for (DeviceInfo d : devices) {
+                            System.out.println("Device " + d.getId() + (d.getId() == m.getDeviceId() ? " (this device)" : "") + ":");
+                            System.out.println(" Name: " + d.getName());
+                            System.out.println(" Created: " + d.getCreated());
+                            System.out.println(" Last seen: " + d.getLastSeen());
+                        }
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                        System.exit(3);
+                    }
+                    break;
                 case "send":
                     if (dBusConn == null && !m.isRegistered()) {
                         System.err.println("User is not registered.");
@@ -491,6 +514,8 @@ public class Main {
                 .required(true)
                 .help("Specify the uri contained in the QR code shown by the new device.");
 
+        Subparser parserDevices = subparsers.addParser("listDevices");
+
         Subparser parserRegister = subparsers.addParser("register");
         parserRegister.addArgument("-v", "--voice")
                 .help("The verification should be done over voice, not sms.")
index a38eed5a3acc4970864e161b61b17c589e87233d..961be232048747e56eedfe6f16a99eac4faa9b41 100644 (file)
@@ -79,7 +79,7 @@ class Manager implements Signal {
 
     private final ObjectMapper jsonProcessot = new ObjectMapper();
     private String username;
-    int deviceId = SignalServiceAddress.DEFAULT_DEVICE_ID;
+    private int deviceId = SignalServiceAddress.DEFAULT_DEVICE_ID;
     private String password;
     private String signalingKey;
     private int preKeyIdOffset;
@@ -107,6 +107,10 @@ class Manager implements Signal {
         return username;
     }
 
+    public int getDeviceId() {
+        return deviceId;
+    }
+
     public String getFileName() {
         new File(dataPath).mkdirs();
         return dataPath + "/" + username;
@@ -256,6 +260,9 @@ class Manager implements Signal {
         save();
     }
 
+    public List<DeviceInfo> getLinkedDevices() throws IOException {
+        return accountManager.getDevices();
+    }
 
     public static Map<String, String> getQueryMap(String query) {
         String[] params = query.split("&");