]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/UpdateGroupCommand.java
Implement setting expiration timer for groups
[signal-cli] / src / main / java / org / asamk / signal / commands / UpdateGroupCommand.java
index 873074467e9956462e6576cfcf6877112369b859..5a6606504b060d95b2a5e009052d924545e67dda 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;
@@ -46,6 +48,14 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
                 .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));
+
+        subparser.addArgument("-e", "--expiration").type(int.class).help("Set expiration time of messages (seconds)");
     }
 
     @Override
@@ -65,16 +75,22 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
 
         var groupDescription = ns.getString("description");
 
-        List<String> groupMembers = ns.getList("member");
+        var groupMembers = ns.<String>getList("member");
 
-        List<String> groupRemoveMembers = ns.getList("remove-member");
+        var groupRemoveMembers = ns.<String>getList("remove-member");
 
-        List<String> groupAdmins = ns.getList("admin");
+        var groupAdmins = ns.<String>getList("admin");
 
-        List<String> groupRemoveAdmins = ns.getList("remove-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");
+
+        var groupExpiration = ns.getInt("expiration");
+
         try {
             if (groupId == null) {
                 var results = m.createGroup(groupName,
@@ -91,7 +107,10 @@ public class UpdateGroupCommand implements DbusCommand, LocalCommand {
                         groupRemoveMembers,
                         groupAdmins,
                         groupRemoveAdmins,
-                        groupAvatar == null ? null : new File(groupAvatar));
+                        groupResetLink,
+                        groupLinkState != null ? groupLinkState.toLinkState() : null,
+                        groupAvatar == null ? null : new File(groupAvatar),
+                        groupExpiration);
                 ErrorUtils.handleTimestampAndSendMessageResults(writer, results.first(), results.second());
             }
         } catch (AttachmentInvalidException e) {