]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/UpdateGroupCommand.java
Change meaning of -v flag from --version to --verbose
[signal-cli] / src / main / java / org / asamk / signal / commands / UpdateGroupCommand.java
index f4f2db0bc3ed53a03269d44184e7d0510db76b5d..411ae74762fbf84b1d130af4a35bd019297cad45 100644 (file)
@@ -7,9 +7,10 @@ import net.sourceforge.argparse4j.inf.Subparser;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
-import org.asamk.signal.manager.AttachmentInvalidException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.AttachmentInvalidException;
 import org.asamk.signal.manager.api.SendGroupMessageResults;
+import org.asamk.signal.manager.api.UnregisteredRecipientException;
 import org.asamk.signal.manager.api.UpdateGroup;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.groups.GroupLinkState;
@@ -28,7 +29,6 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
-import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 public class UpdateGroupCommand implements JsonRpcLocalCommand {
@@ -55,6 +55,8 @@ public class UpdateGroupCommand implements JsonRpcLocalCommand {
         subparser.addArgument("--remove-admin")
                 .nargs("*")
                 .help("Specify one or more members to remove group admin privileges");
+        subparser.addArgument("--ban").nargs("*").help("Specify one or more members to ban from joining the group");
+        subparser.addArgument("--unban").nargs("*").help("Specify one or more members to remove from the ban list");
 
         subparser.addArgument("--reset-link")
                 .action(Arguments.storeTrue())
@@ -114,6 +116,8 @@ public class UpdateGroupCommand implements JsonRpcLocalCommand {
         var groupRemoveMembers = CommandUtil.getSingleRecipientIdentifiers(ns.getList("remove-member"), localNumber);
         var groupAdmins = CommandUtil.getSingleRecipientIdentifiers(ns.getList("admin"), localNumber);
         var groupRemoveAdmins = CommandUtil.getSingleRecipientIdentifiers(ns.getList("remove-admin"), localNumber);
+        var groupBan = CommandUtil.getSingleRecipientIdentifiers(ns.getList("ban"), localNumber);
+        var groupUnban = CommandUtil.getSingleRecipientIdentifiers(ns.getList("unban"), localNumber);
         var groupAvatar = ns.getString("avatar");
         var groupResetLink = Boolean.TRUE.equals(ns.getBoolean("reset-link"));
         var groupLinkState = getGroupLinkState(ns.getString("link"));
@@ -145,6 +149,8 @@ public class UpdateGroupCommand implements JsonRpcLocalCommand {
                             .withRemoveMembers(groupRemoveMembers)
                             .withAdmins(groupAdmins)
                             .withRemoveAdmins(groupRemoveAdmins)
+                            .withBanMembers(groupBan)
+                            .withUnbanMembers(groupUnban)
                             .withResetGroupLink(groupResetLink)
                             .withGroupLinkState(groupLinkState)
                             .withAddMemberPermission(groupAddMemberPermission)
@@ -160,8 +166,7 @@ public class UpdateGroupCommand implements JsonRpcLocalCommand {
                     groupMessageResults = results;
                 } else {
                     groupMessageResults = new SendGroupMessageResults(results.timestamp(),
-                            Stream.concat(groupMessageResults.results().stream(), results.results().stream())
-                                    .collect(Collectors.toList()));
+                            Stream.concat(groupMessageResults.results().stream(), results.results().stream()).toList());
                 }
             }
             outputResult(outputWriter, groupMessageResults, isNewGroup ? groupId : null);
@@ -169,6 +174,8 @@ public class UpdateGroupCommand implements JsonRpcLocalCommand {
             throw new UserErrorException("Failed to add avatar attachment for group\": " + e.getMessage());
         } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) {
             throw new UserErrorException(e.getMessage());
+        } catch (UnregisteredRecipientException e) {
+            throw new UserErrorException("The user " + e.getSender().getIdentifier() + " is not registered.");
         } catch (IOException e) {
             throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass()
                     .getSimpleName() + ")", e);