Fix large message size calculation to use bytes.

This commit is contained in:
Greyson Parrelli
2024-12-18 16:07:30 -05:00
parent e434cda40a
commit 16bb4d10d1
12 changed files with 225 additions and 119 deletions

View File

@@ -51,6 +51,7 @@ import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.MessageUtil;
import org.thoughtcrime.securesms.util.Util;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -62,6 +63,8 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import okio.Utf8;
/**
* MultiShareSender encapsulates send logic (stolen from {@link org.thoughtcrime.securesms.conversation.ConversationActivity}
* and provides a means to:
@@ -113,8 +116,7 @@ public final class MultiShareSender {
List<Contact> contacts = multiShareArgs.getSharedContacts();
SlideDeck slideDeck = new SlideDeck(primarySlideDeck);
boolean needsSplit = message != null &&
message.length() > sendType.calculateCharacters(message).maxPrimaryMessageSize;
boolean needsSplit = message != null && Utf8.size(message) > MessageUtil.MAX_MESSAGE_SIZE_BYTES;
boolean hasMmsMedia = !multiShareArgs.getMedia().isEmpty() ||
(multiShareArgs.getDataUri() != null && multiShareArgs.getDataUri() != Uri.EMPTY) ||
multiShareArgs.getStickerLocator() != null ||
@@ -196,7 +198,7 @@ public final class MultiShareSender {
{
String body = multiShareArgs.getDraftText();
if (sendType.usesSignalTransport() && body != null) {
MessageUtil.SplitResult splitMessage = MessageUtil.getSplitMessage(context, body, sendType.calculateCharacters(body).maxPrimaryMessageSize);
MessageUtil.SplitResult splitMessage = MessageUtil.getSplitMessage(context, body);
body = splitMessage.getBody();
if (splitMessage.getTextSlide().isPresent()) {