- if (message.messageText().length() > ServiceConfig.MAX_MESSAGE_BODY_SIZE) {
- final var messageBytes = message.messageText().getBytes(StandardCharsets.UTF_8);
- final var uploadSpec = dependencies.getMessageSender().getResumableUploadSpec();
- final var streamDetails = new StreamDetails(new ByteArrayInputStream(messageBytes),
- MimeUtils.LONG_TEXT,
- messageBytes.length);
- final var textAttachment = AttachmentUtils.createAttachmentStream(streamDetails,
- Optional.empty(),
- uploadSpec);
- messageBuilder.withBody(message.messageText().substring(0, ServiceConfig.MAX_MESSAGE_BODY_SIZE));
- additionalAttachments.add(context.getAttachmentHelper().uploadAttachment(textAttachment));
+ if (Utf8.size(message.messageText()) > MAX_MESSAGE_SIZE_BYTES) {
+ final var result = splitByByteLength(message.messageText(), MAX_MESSAGE_SIZE_BYTES);
+ final var trimmed = result.getFirst();
+ final var remainder = result.getSecond();
+ if (remainder != null) {
+ final var messageBytes = message.messageText().getBytes(StandardCharsets.UTF_8);
+ final var uploadSpec = dependencies.getMessageSender().getResumableUploadSpec();
+ final var streamDetails = new StreamDetails(new ByteArrayInputStream(messageBytes),
+ MimeUtils.LONG_TEXT,
+ messageBytes.length);
+ final var textAttachment = AttachmentUtils.createAttachmentStream(streamDetails,
+ Optional.empty(),
+ uploadSpec);
+ messageBuilder.withBody(trimmed);
+ additionalAttachments.add(context.getAttachmentHelper().uploadAttachment(textAttachment));
+ } else {
+ messageBuilder.withBody(message.messageText());
+ }