Add debug UI for multi-image sends.

pull/1/head
Matthew Chen 7 years ago
parent 078503ff2e
commit d04f1e6e36

@ -127,6 +127,10 @@ NS_ASSUME_NONNULL_BEGIN
actionBlock:^{ actionBlock:^{
[DebugUIMessages sendNTextMessagesInThread:thread]; [DebugUIMessages sendNTextMessagesInThread:thread];
}], }],
[OWSTableItem itemWithTitle:@"Send multi-image messages"
actionBlock:^{
[DebugUIMessages sendMultiImageMessageInThread:thread];
}],
[OWSTableItem itemWithTitle:@"Select Fake" [OWSTableItem itemWithTitle:@"Select Fake"
actionBlock:^{ actionBlock:^{
[DebugUIMessages selectFakeAction:thread]; [DebugUIMessages selectFakeAction:thread];
@ -246,7 +250,6 @@ NS_ASSUME_NONNULL_BEGIN
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
[self.messageSenderJobQueue addMessage:syncGroupsRequestMessage transaction:transaction]; [self.messageSenderJobQueue addMessage:syncGroupsRequestMessage transaction:transaction];
}]; }];
}], }],
[OWSTableItem itemWithTitle:@"Message with stalled timer" [OWSTableItem itemWithTitle:@"Message with stalled timer"
actionBlock:^{ actionBlock:^{
@ -3357,7 +3360,7 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
// style them indistinguishably from a separate text message. // style them indistinguishably from a separate text message.
attachment.captionText = [self randomCaptionText]; attachment.captionText = [self randomCaptionText];
} }
[ThreadUtil enqueueMessageWithAttachment:attachment inThread:thread quotedReplyModel:nil ignoreErrors:YES]; [ThreadUtil enqueueMessageWithAttachment:attachment inThread:thread quotedReplyModel:nil];
} }
+ (SSKProtoEnvelope *)createEnvelopeForThread:(TSThread *)thread + (SSKProtoEnvelope *)createEnvelopeForThread:(TSThread *)thread
@ -4631,6 +4634,41 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
} }
} }
+ (void)sendMultiImageMessageInThread:(TSThread *)thread
{
OWSLogInfo(@"");
const uint32_t kMinImageCount = 2;
const uint32_t kMaxImageCount = 10;
uint32_t imageCount = kMinImageCount + arc4random_uniform(kMaxImageCount - kMinImageCount);
NSMutableArray<SignalAttachment *> *attachments = [NSMutableArray new];
for (uint32_t i = 0; i < imageCount; i++) {
UIColor *imageColor = [UIColor colorWithRed:arc4random_uniform(256) / 255.f
green:arc4random_uniform(256) / 255.f
blue:arc4random_uniform(256) / 255.f
alpha:1.f];
UIImage *image = [UIImage imageWithColor:imageColor size:CGSizeMake(10.f, 10.f)];
OWSAssertDebug(image);
NSData *pngData = UIImagePNGRepresentation(image);
OWSAssertDebug(pngData);
NSString *filePath = [OWSFileSystem temporaryFilePathWithFileExtension:@"png"];
[pngData writeToFile:filePath atomically:YES];
OWSAssertDebug([NSFileManager.defaultManager fileExistsAtPath:filePath]);
DataSource *dataSource = [DataSourcePath dataSourceWithFilePath:filePath shouldDeleteOnDeallocation:YES];
SignalAttachment *attachment = [SignalAttachment attachmentWithDataSource:dataSource
dataUTI:(NSString *)kUTTypePNG
imageQuality:TSImageQualityOriginal];
[attachments addObject:attachment];
}
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
TSOutgoingMessage *message =
[ThreadUtil enqueueMessageWithAttachments:attachments inThread:thread quotedReplyModel:nil];
OWSLogError(@"timestamp: %llu.", message.timestamp);
}];
}
#endif #endif
@end @end

@ -53,10 +53,9 @@ NS_ASSUME_NONNULL_BEGIN
inThread:(TSThread *)thread inThread:(TSThread *)thread
quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel; quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel;
+ (TSOutgoingMessage *)enqueueMessageWithAttachment:(SignalAttachment *)attachment + (TSOutgoingMessage *)enqueueMessageWithAttachments:(NSArray<SignalAttachment *> *)attachments
inThread:(TSThread *)thread inThread:(TSThread *)thread
quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel;
ignoreErrors:(BOOL)ignoreErrors;
+ (TSOutgoingMessage *)enqueueMessageWithContactShare:(OWSContact *)contactShare inThread:(TSThread *)thread; + (TSOutgoingMessage *)enqueueMessageWithContactShare:(OWSContact *)contactShare inThread:(TSThread *)thread;
+ (void)enqueueLeaveGroupMessageInThread:(TSGroupThread *)thread; + (void)enqueueLeaveGroupMessageInThread:(TSGroupThread *)thread;

@ -93,35 +93,36 @@ NS_ASSUME_NONNULL_BEGIN
inThread:(TSThread *)thread inThread:(TSThread *)thread
quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel
{ {
return [self enqueueMessageWithAttachment:attachment return [self enqueueMessageWithAttachment:attachment inThread:thread quotedReplyModel:quotedReplyModel];
inThread:thread
quotedReplyModel:quotedReplyModel
ignoreErrors:NO];
} }
+ (TSOutgoingMessage *)enqueueMessageWithAttachment:(SignalAttachment *)attachment + (TSOutgoingMessage *)enqueueMessageWithAttachments:(NSArray<SignalAttachment *> *)attachments
inThread:(TSThread *)thread inThread:(TSThread *)thread
quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel quotedReplyModel:(nullable OWSQuotedReplyModel *)quotedReplyModel
ignoreErrors:(BOOL)ignoreErrors
{ {
OWSAssertIsOnMainThread(); OWSAssertIsOnMainThread();
OWSAssertDebug(attachment); OWSAssertDebug(attachments.count > 0);
OWSAssertDebug(thread);
for (SignalAttachment *attachment in attachments) {
OWSAssertDebug(!attachment.hasError); OWSAssertDebug(!attachment.hasError);
OWSAssertDebug(attachment.mimeType.length > 0); OWSAssertDebug(attachment.mimeType.length > 0);
OWSAssertDebug(thread); }
OWSDisappearingMessagesConfiguration *configuration = OWSDisappearingMessagesConfiguration *configuration =
[OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:thread.uniqueId]; [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:thread.uniqueId];
uint32_t expiresInSeconds = (configuration.isEnabled ? configuration.durationSeconds : 0); uint32_t expiresInSeconds = (configuration.isEnabled ? configuration.durationSeconds : 0);
BOOL isVoiceMessage = (attachments.count == 1 && attachments.lastObject.isVoiceMessage);
// TODO: Support multi-image captions.
NSString *_Nullable messageBody = attachments.lastObject.captionText;
TSOutgoingMessage *message = TSOutgoingMessage *message =
[[TSOutgoingMessage alloc] initOutgoingMessageWithTimestamp:[NSDate ows_millisecondTimeStamp] [[TSOutgoingMessage alloc] initOutgoingMessageWithTimestamp:[NSDate ows_millisecondTimeStamp]
inThread:thread inThread:thread
messageBody:attachment.captionText messageBody:messageBody
attachmentIds:[NSMutableArray new] attachmentIds:[NSMutableArray new]
expiresInSeconds:expiresInSeconds expiresInSeconds:expiresInSeconds
expireStartedAt:0 expireStartedAt:0
isVoiceMessage:[attachment isVoiceMessage] isVoiceMessage:isVoiceMessage
groupMetaMessage:TSGroupMetaMessageUnspecified groupMetaMessage:TSGroupMetaMessageUnspecified
quotedMessage:[quotedReplyModel buildQuotedMessageForSending] quotedMessage:[quotedReplyModel buildQuotedMessageForSending]
contactShare:nil]; contactShare:nil];

Loading…
Cancel
Save