]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/UpdateAccountCommand.java
Improve addDevice error message
[signal-cli] / src / main / java / org / asamk / signal / commands / UpdateAccountCommand.java
index d430f49fae581549ba5c1c14e872d3add96dd3fa..a750bc88fe62b105c646d7a5bd5893c82bcd7ba9 100644 (file)
@@ -28,6 +28,16 @@ public class UpdateAccountCommand implements JsonRpcLocalCommand {
     public void attachToSubparser(final Subparser subparser) {
         subparser.help("Update the account attributes on the signal server.");
         subparser.addArgument("-n", "--device-name").help("Specify a name to describe this device.");
+        subparser.addArgument("--unrestricted-unidentified-sender")
+                .type(Boolean.class)
+                .help("Enable if anyone should be able to send you unidentified sender messages.");
+        subparser.addArgument("--discoverable-by-number")
+                .type(Boolean.class)
+                .help("Enable/disable if the account should be discoverable by phone number");
+        subparser.addArgument("--number-sharing")
+                .type(Boolean.class)
+                .help("Indicates if Signal should share its phone number when sending a message.");
+
         var mut = subparser.addMutuallyExclusiveGroup();
         mut.addArgument("-u", "--username").help("Specify a username that can then be used to contact this account.");
         mut.addArgument("--delete-username")
@@ -39,20 +49,28 @@ public class UpdateAccountCommand implements JsonRpcLocalCommand {
     public void handleCommand(
             final Namespace ns, final Manager m, final OutputWriter outputWriter
     ) throws CommandException {
-        var deviceName = ns.getString("device-name");
+        final var deviceName = ns.getString("device-name");
+        final var unrestrictedUnidentifiedSender = ns.getBoolean("unrestricted-unidentified-sender");
+        final var discoverableByNumber = ns.getBoolean("discoverable-by-number");
+        final var numberSharing = ns.getBoolean("number-sharing");
         try {
-            m.updateAccountAttributes(deviceName);
+            m.updateAccountAttributes(deviceName, unrestrictedUnidentifiedSender, discoverableByNumber, numberSharing);
         } catch (IOException e) {
             throw new IOErrorException("UpdateAccount error: " + e.getMessage(), e);
         }
 
-        var username = ns.getString("username");
+        final var username = ns.getString("username");
         if (username != null) {
             try {
-                final var newUsername = m.setUsername(username);
+                m.setUsername(username);
+                final var newUsername = m.getUsername();
+                final var newUsernameLink = m.getUsernameLink();
                 switch (outputWriter) {
-                    case PlainTextWriter w -> w.println("Your new username: {}", newUsername);
-                    case JsonWriter w -> w.write(new JsonAccountResponse(newUsername));
+                    case PlainTextWriter w -> w.println("Your new username: {} ({})",
+                            newUsername,
+                            newUsernameLink == null ? "-" : newUsernameLink.getUrl());
+                    case JsonWriter w -> w.write(new JsonAccountResponse(newUsername,
+                            newUsernameLink == null ? null : newUsernameLink.getUrl()));
                 }
             } catch (IOException e) {
                 throw new IOErrorException("Failed to set username: " + e.getMessage(), e);
@@ -61,7 +79,7 @@ public class UpdateAccountCommand implements JsonRpcLocalCommand {
             }
         }
 
-        var deleteUsername = Boolean.TRUE.equals(ns.getBoolean("delete-username"));
+        final var deleteUsername = Boolean.TRUE.equals(ns.getBoolean("delete-username"));
         if (deleteUsername) {
             try {
                 m.deleteUsername();
@@ -72,6 +90,7 @@ public class UpdateAccountCommand implements JsonRpcLocalCommand {
     }
 
     private record JsonAccountResponse(
-            @JsonInclude(JsonInclude.Include.NON_NULL) String username
+            @JsonInclude(JsonInclude.Include.NON_NULL) String username,
+            @JsonInclude(JsonInclude.Include.NON_NULL) String usernameLink
     ) {}
 }