From: AsamK Date: Tue, 10 Aug 2021 13:39:41 +0000 (+0200) Subject: Implement JsonRpc command for joinGroup X-Git-Tag: v0.9.0~81 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/7b809c6547b0d473c1d03e9fac0fd501cde45a5b Implement JsonRpc command for joinGroup --- diff --git a/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java b/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java index 1597c427..e5a872e0 100644 --- a/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java +++ b/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java @@ -3,6 +3,7 @@ package org.asamk.signal.commands; import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; +import org.asamk.signal.JsonWriter; import org.asamk.signal.OutputWriter; import org.asamk.signal.PlainTextWriter; import org.asamk.signal.commands.exceptions.CommandException; @@ -16,10 +17,11 @@ import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException import org.whispersystems.signalservice.internal.push.exceptions.GroupPatchNotAcceptedException; import java.io.IOException; +import java.util.Map; import static org.asamk.signal.util.ErrorUtils.handleSendMessageResults; -public class JoinGroupCommand implements LocalCommand { +public class JoinGroupCommand implements JsonRpcLocalCommand { private final OutputWriter outputWriter; @@ -49,14 +51,22 @@ public class JoinGroupCommand implements LocalCommand { } try { - final var writer = (PlainTextWriter) outputWriter; - final var results = m.joinGroup(linkUrl); var newGroupId = results.first(); - if (!m.getGroup(newGroupId).isMember(m.getSelfRecipientId())) { - writer.println("Requested to join group \"{}\"", newGroupId.toBase64()); + if (outputWriter instanceof JsonWriter) { + final var writer = (JsonWriter) outputWriter; + if (!m.getGroup(newGroupId).isMember(m.getSelfRecipientId())) { + writer.write(Map.of("groupId", newGroupId.toBase64(), "onlyRequested", true)); + } else { + writer.write(Map.of("groupId", newGroupId.toBase64())); + } } else { - writer.println("Joined group \"{}\"", newGroupId.toBase64()); + final var writer = (PlainTextWriter) outputWriter; + if (!m.getGroup(newGroupId).isMember(m.getSelfRecipientId())) { + writer.println("Requested to join group \"{}\"", newGroupId.toBase64()); + } else { + writer.println("Joined group \"{}\"", newGroupId.toBase64()); + } } handleSendMessageResults(results.second()); } catch (GroupPatchNotAcceptedException e) {