- long timestamp = signal.sendMessage(messageText, attachments, ns.getList("recipient"));
- System.out.println(timestamp);
- return 0;
- } catch (AssertionError e) {
- handleAssertionError(e);
- return 1;
- } catch (DBusExecutionException e) {
- System.err.println("Failed to send message: " + e.getMessage());
- return 1;
+ var results = m.sendMessage(new Message(messageText, attachments, mentions), recipientIdentifiers);
+ outputResult(outputWriter, results.timestamp());
+ ErrorUtils.handleSendMessageResults(results.results());
+ } catch (AttachmentInvalidException | IOException e) {
+ throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass()
+ .getSimpleName() + ")", e);
+ } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) {
+ throw new UserErrorException(e.getMessage());
+ }
+ }
+
+ private void outputResult(final OutputWriter outputWriter, final long timestamp) {
+ if (outputWriter instanceof PlainTextWriter writer) {
+ writer.println("{}", timestamp);
+ } else {
+ final var writer = (JsonWriter) outputWriter;
+ writer.write(Map.of("timestamp", timestamp));