import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparser;
-import org.asamk.signal.PlainTextWriterImpl;
+import org.asamk.signal.JsonWriter;
+import org.asamk.signal.OutputWriter;
+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;
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 {
+
+ @Override
+ public String getName() {
+ return "joinGroup";
+ }
@Override
public void attachToSubparser(final Subparser subparser) {
}
@Override
- public void handleCommand(final Namespace ns, final Manager m) throws CommandException {
+ public void handleCommand(
+ final Namespace ns, final Manager m, final OutputWriter outputWriter
+ ) throws CommandException {
final GroupInviteLinkUrl linkUrl;
var uri = ns.getString("uri");
try {
}
try {
- final var writer = new PlainTextWriterImpl(System.out);
-
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().getResults());
} catch (GroupPatchNotAcceptedException e) {
throw new UserErrorException("Failed to join group, maybe already a member");
} catch (IOException e) {