diff --git a/Signal/src/ViewControllers/MessagesViewController.m b/Signal/src/ViewControllers/MessagesViewController.m index a47d50f7f..b901a7a73 100644 --- a/Signal/src/ViewControllers/MessagesViewController.m +++ b/Signal/src/ViewControllers/MessagesViewController.m @@ -1098,35 +1098,21 @@ typedef enum : NSUInteger { text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - // Limit outgoing text messages to 64kb. - // - // TODO: Convert large text messages to attachments - // which are presented as normal text messages. - const NSUInteger kMaxTextMessageSize = 64 * 1024; - if ([text lengthOfBytesUsingEncoding:NSUTF8StringEncoding] > kMaxTextMessageSize) { - UIAlertController *controller = - [UIAlertController alertControllerWithTitle:NSLocalizedString(@"CONVERSATION_VIEW_TEXT_MESSAGE_TOO_LARGE_ALERT_TITLE", - @"The title of the 'text message too large' alert.") - message:NSLocalizedString(@"CONVERSATION_VIEW_TEXT_MESSAGE_TOO_LARGE_ALERT_MESSAGE", - @"The message of the 'text message too large' alert.") - preferredStyle:UIAlertControllerStyleAlert]; - [controller addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"OK", nil) - style:UIAlertActionStyleDefault - handler:nil]]; - [self presentViewController:controller - animated:YES - completion:nil]; - return; - } - if (text.length > 0) { if ([Environment.preferences soundInForeground]) { [JSQSystemSoundPlayer jsq_playMessageSentSound]; } - - [ThreadUtil sendMessageWithText:text - inThread:self.thread - messageSender:self.messageSender]; + // Limit outgoing text messages to 16kb. + // + // We convert large text messages to attachments + // which are presented as normal text messages. + const NSUInteger kOversizeTextMessageSizeThreshold = 16 * 1024; + if ([text lengthOfBytesUsingEncoding:NSUTF8StringEncoding] >= kOversizeTextMessageSizeThreshold) { + SignalAttachment *attachment = [SignalAttachment oversizeTextAttachmentWithText:text]; + [ThreadUtil sendMessageWithAttachment:attachment inThread:self.thread messageSender:self.messageSender]; + } else { + [ThreadUtil sendMessageWithText:text inThread:self.thread messageSender:self.messageSender]; + } if (updateKeyboardState) { [self toggleDefaultKeyboard];