From bef3a56e506da11083830f8f205a9df32d433ba0 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Sat, 1 Jul 2017 13:55:07 -0700 Subject: [PATCH 1/2] DebugUI: create fake unread messages helpful for printing unread indicator // FREEBIE --- .../TSMessageAdapaters/TSMessageAdapter.m | 1 + .../ConversationView/MessagesViewController.m | 2 ++ .../ViewControllers/DebugUI/DebugUIMessages.m | 23 +++++++++++++++++++ Signal/src/views/OWSSystemMessageCell.m | 2 ++ 4 files changed, 28 insertions(+) diff --git a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m index 79b598afc..1bd25f27d 100644 --- a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m +++ b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m @@ -261,6 +261,7 @@ NS_ASSUME_NONNULL_BEGIN adapter.outgoingMessageStatus = ((TSOutgoingMessage *)interaction).messageState; } + OWSAssert(adapter.date); return adapter; } diff --git a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m index 464747b0e..772943c27 100644 --- a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m +++ b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m @@ -1835,6 +1835,8 @@ typedef enum : NSUInteger { id previousMessage = [self messageAtIndexPath:[NSIndexPath indexPathForItem:indexPath.row - 1 inSection:indexPath.section]]; + OWSAssert(currentMessage.date); + OWSAssert(previousMessage.date); NSTimeInterval timeDifference = [currentMessage.date timeIntervalSinceDate:previousMessage.date]; if (timeDifference > kTSMessageSentDateShowTimeInterval) { showDate = YES; diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m index 8661dd57c..587e4b1e9 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m @@ -77,6 +77,14 @@ NS_ASSUME_NONNULL_BEGIN actionBlock:^{ [DebugUIMessages sendFakeMessages:10 * 1000 thread:thread]; }], + [OWSTableItem itemWithTitle:@"Create 1 fake unread messages" + actionBlock:^{ + [DebugUIMessages createFakeUnreadMessages:1 thread:thread]; + }], + [OWSTableItem itemWithTitle:@"Create 10 fake unread messages" + actionBlock:^{ + [DebugUIMessages createFakeUnreadMessages:10 thread:thread]; + }], [OWSTableItem itemWithTitle:@"Send text/x-signal-plain" actionBlock:^{ [DebugUIMessages sendOversizeTextMessage:thread]; @@ -780,6 +788,21 @@ NS_ASSUME_NONNULL_BEGIN return randomText; } ++ (void)createFakeUnreadMessages:(int)counter thread:(TSThread *)thread +{ + [TSStorageManager.sharedManager.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + for (int i = 0; i < counter; i++) { + NSString *randomText = [self randomText]; + TSIncomingMessage *message = [[TSIncomingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] + inThread:thread + authorId:@"+19174054215" + sourceDeviceId:0 + messageBody:randomText]; + [message saveWithTransaction:transaction]; + } + }]; +} + + (void)sendFakeMessages:(int)counter thread:(TSThread *)thread { [TSStorageManager.sharedManager.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { diff --git a/Signal/src/views/OWSSystemMessageCell.m b/Signal/src/views/OWSSystemMessageCell.m index 3b63ec4da..cf0fd14ba 100644 --- a/Signal/src/views/OWSSystemMessageCell.m +++ b/Signal/src/views/OWSSystemMessageCell.m @@ -24,6 +24,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) UIImageView *imageView; @property (nonatomic) UILabel *titleLabel; + +// override from JSQMessagesCollectionViewCell @property (nonatomic) UILabel *cellTopLabel; @end From c6cd0bbcaecdcec8d4bf113ce5988df1f65d5f6e Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Sat, 1 Jul 2017 14:06:02 -0700 Subject: [PATCH 2/2] Always show timestamp after unread indicator // FREEBIE --- .../ConversationView/MessagesViewController.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m index 772943c27..a1b81eb9e 100644 --- a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m +++ b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m @@ -1835,6 +1835,11 @@ typedef enum : NSUInteger { id previousMessage = [self messageAtIndexPath:[NSIndexPath indexPathForItem:indexPath.row - 1 inSection:indexPath.section]]; + if ([previousMessage.interaction isKindOfClass:[TSUnreadIndicatorInteraction class]]) { + // Always show timestamp between unread indicator and the following interaction + return YES; + } + OWSAssert(currentMessage.date); OWSAssert(previousMessage.date); NSTimeInterval timeDifference = [currentMessage.date timeIntervalSinceDate:previousMessage.date];