Elaborate debug UI for messages.

This commit is contained in:
Matthew Chen 2018-03-26 09:33:23 -04:00
parent a130760085
commit 8542a18f33
1 changed files with 126 additions and 4 deletions

View File

@ -30,9 +30,7 @@
NS_ASSUME_NONNULL_BEGIN
// Delivered/Read
// Fake image contents
// Oversize text messages.
typedef void (^ActionSuccessBlock)(void);
typedef void (^ActionFailureBlock)(void);
typedef void (^ActionPrepareBlock)(ActionSuccessBlock success, ActionFailureBlock failure);
@ -244,6 +242,57 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
#pragma mark -
+ (FakeAssetLoader *)fakeOversizeTextAssetLoader
{
FakeAssetLoader *instance = [FakeAssetLoader new];
instance.mimeType = OWSMimeTypeOversizeTextMessage;
instance.filename = @"attachment.txt";
__weak FakeAssetLoader *weakSelf = instance;
instance.prepareBlock = ^(ActionSuccessBlock success, ActionFailureBlock failure) {
[weakSelf ensureOversizeTextAssetLoaded:success failure:failure];
};
return instance;
}
- (void)ensureOversizeTextAssetLoaded:(ActionSuccessBlock)success failure:(ActionFailureBlock)failure
{
OWSAssert(success);
OWSAssert(failure);
OWSAssert(self.filename.length > 0);
OWSAssert(self.mimeType.length > 0);
if (self.filePath) {
success();
return;
}
NSMutableString *message = [NSMutableString new];
for (NSUInteger i = 0; i < 32; i++) {
[message appendString:@"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rutrum, nulla "
@"vitae pretium hendrerit, tellus turpis pharetra libero, vitae sodales tortor ante vel "
@"sem. Fusce sed nisl a lorem gravida tincidunt. Suspendisse efficitur non quam ac "
@"sodales. Aenean ut velit maximus, posuere sem a, accumsan nunc. Donec ullamcorper "
@"turpis lorem. Quisque dignissim purus eu placerat ultricies. Proin at urna eget mi "
@"semper congue. Aenean non elementum ex. Praesent pharetra quam at sem vestibulum, "
@"vestibulum ornare dolor elementum. Vestibulum massa tortor, scelerisque sit amet "
@"pulvinar a, rhoncus vitae nisl. Sed mi nunc, tempus at varius in, malesuada vitae "
@"dui. Vivamus efficitur pulvinar erat vitae congue. Proin vehicula turpis non felis "
@"congue facilisis. Nullam aliquet dapibus ligula ac mollis. Etiam sit amet posuere "
@"lorem, in rhoncus nisi.\n\n"];
}
NSString *fileExtension = @"txt";
NSString *filePath = [OWSFileSystem temporaryFilePathWithFileExtension:fileExtension];
NSData *data = [message dataUsingEncoding:NSUTF8StringEncoding];
OWSAssert(data);
BOOL didWrite = [data writeToFile:filePath atomically:YES];
OWSAssert(didWrite);
self.filePath = filePath;
OWSAssert([NSFileManager.defaultManager fileExistsAtPath:filePath]);
}
#pragma mark -
+ (instancetype)jpegInstance
{
static FakeAssetLoader *instance = nil;
@ -364,6 +413,16 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
return instance;
}
+ (instancetype)oversizeTextInstance
{
static FakeAssetLoader *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [FakeAssetLoader fakeOversizeTextAssetLoader];
});
return instance;
}
@end
#pragma mark -
@ -1336,7 +1395,7 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
{
OWSAssert(thread);
return [self fakeOutgoingMediaAction:@"Fake Missing Png"
return [self fakeOutgoingMediaAction:@"Fake Outgoing Missing Png"
messageState:messageState
hasCaption:hasCaption
fakeAssetLoader:[FakeAssetLoader missingPngInstance]
@ -1349,13 +1408,26 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
{
OWSAssert(thread);
return [self fakeOutgoingMediaAction:@"Fake Missing Pdf"
return [self fakeOutgoingMediaAction:@"Fake Outgoing Missing Pdf"
messageState:messageState
hasCaption:hasCaption
fakeAssetLoader:[FakeAssetLoader missingPdfInstance]
thread:thread];
}
+ (DebugUIMessagesAction *)fakeOutgoingOversizeTextAction:(TSThread *)thread
messageState:(TSOutgoingMessageState)messageState
hasCaption:(BOOL)hasCaption
{
OWSAssert(thread);
return [self fakeOutgoingMediaAction:@"Fake Outgoing Oversize Text"
messageState:messageState
hasCaption:hasCaption
fakeAssetLoader:[FakeAssetLoader oversizeTextInstance]
thread:thread];
}
+ (DebugUIMessagesAction *)fakeOutgoingMediaAction:(NSString *)labelParam
messageState:(TSOutgoingMessageState)messageState
hasCaption:(BOOL)hasCaption
@ -1603,6 +1675,19 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
thread:thread];
}
+ (DebugUIMessagesAction *)fakeIncomingOversizeTextAction:(TSThread *)thread
isAttachmentDownloaded:(BOOL)isAttachmentDownloaded
hasCaption:(BOOL)hasCaption
{
OWSAssert(thread);
return [self fakeIncomingMediaAction:@"Fake Incoming Oversize Text"
isAttachmentDownloaded:isAttachmentDownloaded
hasCaption:hasCaption
fakeAssetLoader:[FakeAssetLoader oversizeTextInstance]
thread:thread];
}
+ (DebugUIMessagesAction *)fakeIncomingMediaAction:(NSString *)labelParam
isAttachmentDownloaded:(BOOL)isAttachmentDownloaded
hasCaption:(BOOL)hasCaption
@ -1764,6 +1849,10 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
[self fakeOutgoingMissingPngAction:thread messageState:TSOutgoingMessageStateUnsent hasCaption:NO],
//
[self fakeOutgoingMissingPdfAction:thread messageState:TSOutgoingMessageStateUnsent hasCaption:NO],
//
[self fakeOutgoingOversizeTextAction:thread messageState:TSOutgoingMessageStateUnsent hasCaption:NO],
[self fakeOutgoingOversizeTextAction:thread messageState:TSOutgoingMessageStateAttemptingOut hasCaption:NO],
[self fakeOutgoingOversizeTextAction:thread messageState:TSOutgoingMessageStateSentToService hasCaption:NO],
// Incoming
[self fakeIncomingJpegAction:thread isAttachmentDownloaded:NO hasCaption:NO],
@ -1808,6 +1897,9 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
//
[self fakeIncomingMissingPdfAction:thread isAttachmentDownloaded:YES hasCaption:NO],
[self fakeIncomingMissingPdfAction:thread isAttachmentDownloaded:YES hasCaption:YES],
//
[self fakeIncomingOversizeTextAction:thread isAttachmentDownloaded:NO hasCaption:NO],
[self fakeIncomingOversizeTextAction:thread isAttachmentDownloaded:YES hasCaption:NO],
];
return actions;
}
@ -1927,6 +2019,14 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
+ (DebugUIMessagesAction *)fakeShortOutgoingTextMessageAction:(TSThread *)thread
messageState:(TSOutgoingMessageState)messageState
{
return [self fakeShortOutgoingTextMessageAction:thread messageState:messageState isDelivered:NO isRead:NO];
}
+ (DebugUIMessagesAction *)fakeShortOutgoingTextMessageAction:(TSThread *)thread
messageState:(TSOutgoingMessageState)messageState
isDelivered:(BOOL)isDelivered
isRead:(BOOL)isRead
{
OWSAssert(thread);
@ -1940,6 +2040,20 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
messageBody:messageBody];
[message saveWithTransaction:transaction];
[message updateWithMessageState:messageState transaction:transaction];
if (isDelivered) {
NSString *_Nullable recipientId = thread.recipientIdentifiers.lastObject;
OWSAssert(recipientId.length > 0);
[message updateWithDeliveredToRecipientId:recipientId
deliveryTimestamp:@([NSDate ows_millisecondTimeStamp])
transaction:transaction];
}
if (isRead) {
NSString *_Nullable recipientId = thread.recipientIdentifiers.lastObject;
OWSAssert(recipientId.length > 0);
[message updateWithReadRecipientId:recipientId
readTimestamp:[NSDate ows_millisecondTimeStamp]
transaction:transaction];
}
}];
}
@ -1959,6 +2073,14 @@ typedef NS_ENUM(NSUInteger, SubactionMode) {
[self fakeShortOutgoingTextMessageAction:thread messageState:TSOutgoingMessageStateUnsent],
[self fakeShortOutgoingTextMessageAction:thread messageState:TSOutgoingMessageStateAttemptingOut],
[self fakeShortOutgoingTextMessageAction:thread messageState:TSOutgoingMessageStateSentToService],
[self fakeShortOutgoingTextMessageAction:thread
messageState:TSOutgoingMessageStateSentToService
isDelivered:YES
isRead:NO],
[self fakeShortOutgoingTextMessageAction:thread
messageState:TSOutgoingMessageStateSentToService
isDelivered:YES
isRead:YES],
[self fakeOutgoingTextMessageAction:thread messageState:TSOutgoingMessageStateSentToService text:@"Hi"],
[self fakeOutgoingTextMessageAction:thread messageState:TSOutgoingMessageStateSentToService text:@"1⃣"],
[self fakeOutgoingTextMessageAction:thread