]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/UpdateGroupCommand.java
Implement configuring of group link
[signal-cli] / src / main / java / org / asamk / signal / commands / UpdateGroupCommand.java
index 00dd10d98a91648f73129a22e551c88a5d2ddfa6..64485f6d2427b0f19a588d9f555eee156ee01ff2 100644 (file)
@@ -1,9 +1,11 @@
 package org.asamk.signal.commands;
 
+import net.sourceforge.argparse4j.impl.Arguments;
 import net.sourceforge.argparse4j.inf.Namespace;
 import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.Signal;
+import org.asamk.signal.GroupLinkState;
 import org.asamk.signal.PlainTextWriterImpl;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
@@ -38,6 +40,20 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
         subparser.addArgument("-d", "--description").help("Specify the new group description.");
         subparser.addArgument("-a", "--avatar").help("Specify a new group avatar image file");
         subparser.addArgument("-m", "--member").nargs("*").help("Specify one or more members to add to the group");
+        subparser.addArgument("-r", "--remove-member")
+                .nargs("*")
+                .help("Specify one or more members to remove from the group");
+        subparser.addArgument("--admin").nargs("*").help("Specify one or more members to make a group admin");
+        subparser.addArgument("--remove-admin")
+                .nargs("*")
+                .help("Specify one or more members to remove group admin privileges");
+
+        subparser.addArgument("--reset-link")
+                .action(Arguments.storeTrue())
+                .help("Reset group link and create new link password");
+        subparser.addArgument("--link")
+                .help("Set group link state, with or without admin approval")
+                .type(Arguments.enumStringType(GroupLinkState.class));
     }
 
     @Override
@@ -57,10 +73,20 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
 
         var groupDescription = ns.getString("description");
 
-        List<String> groupMembers = ns.getList("member");
+        var groupMembers = ns.<String>getList("member");
+
+        var groupRemoveMembers = ns.<String>getList("remove-member");
+
+        var groupAdmins = ns.<String>getList("admin");
+
+        var groupRemoveAdmins = ns.<String>getList("remove-admin");
 
         var groupAvatar = ns.getString("avatar");
 
+        var groupResetLink = ns.getBoolean("reset-link");
+
+        var groupLinkState = ns.<GroupLinkState>get("link");
+
         try {
             if (groupId == null) {
                 var results = m.createGroup(groupName,
@@ -74,6 +100,11 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
                         groupName,
                         groupDescription,
                         groupMembers,
+                        groupRemoveMembers,
+                        groupAdmins,
+                        groupRemoveAdmins,
+                        groupResetLink,
+                        groupLinkState != null ? groupLinkState.toLinkState() : null,
                         groupAvatar == null ? null : new File(groupAvatar));
                 ErrorUtils.handleTimestampAndSendMessageResults(writer, results.first(), results.second());
             }