X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/48b2c7ff8ad7b653c3a0cb42775a5850f593d0a0..28f735741a26c571da59323f0faceee95b055e3b:/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java diff --git a/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java b/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java index 6cb81b7e..e5a872e0 100644 --- a/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java +++ b/src/main/java/org/asamk/signal/commands/JoinGroupCommand.java @@ -3,8 +3,9 @@ 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.PlainTextWriterImpl; +import org.asamk.signal.PlainTextWriter; import org.asamk.signal.commands.exceptions.CommandException; import org.asamk.signal.commands.exceptions.IOErrorException; import org.asamk.signal.commands.exceptions.UnexpectedErrorException; @@ -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.handleTimestampAndSendMessageResults; +import static org.asamk.signal.util.ErrorUtils.handleSendMessageResults; -public class JoinGroupCommand implements LocalCommand { +public class JoinGroupCommand implements JsonRpcLocalCommand { private final OutputWriter outputWriter; @@ -49,16 +51,24 @@ public class JoinGroupCommand implements LocalCommand { } try { - final var writer = (PlainTextWriterImpl) 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()); + } } - handleTimestampAndSendMessageResults(writer, 0, results.second()); + handleSendMessageResults(results.second()); } catch (GroupPatchNotAcceptedException e) { throw new UserErrorException("Failed to join group, maybe already a member"); } catch (IOException e) {