From 89523f556b96b3f03472047f2d68559d23cab709 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 26 Jun 2018 11:02:30 -0400 Subject: [PATCH] Tweak intra-cell spacing. --- .../ConversationView/ConversationViewController.m | 8 +++++--- .../ConversationView/ConversationViewItem.m | 15 ++++++++++++++- .../src/ViewControllers/HomeView/HomeViewCell.m | 1 - 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 40a2bfb84..8c9b20864 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -4910,13 +4910,15 @@ typedef enum : NSUInteger { } lastInteractionType = interactionType; - // If this is an existing view item and it has changed size, - // note that so that we can reload this cell while doing - // incremental updates. + // When `shouldHideRecipientStatus` changes, reload the cell if necessary. if (viewItem.shouldHideRecipientStatus != shouldHideRecipientStatus && viewItem.previousRow != NSNotFound) { [rowsThatChangedSize addObject:@(viewItem.previousRow)]; } viewItem.shouldHideRecipientStatus = shouldHideRecipientStatus; + // When `shouldHideAvatar` changes, reload the cell if necessary. + if (viewItem.shouldHideAvatar != shouldHideAvatar && viewItem.previousRow != NSNotFound) { + [rowsThatChangedSize addObject:@(viewItem.previousRow)]; + } viewItem.shouldHideAvatar = shouldHideAvatar; } diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m index adaaa8ecf..1356b66dc 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m @@ -271,8 +271,21 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType) return 0.f; } + // "Bubble Collapse". Adjacent messages with the same author should be close together. + if (self.interaction.interactionType == OWSInteractionType_IncomingMessage + && previousLayoutItem.interaction.interactionType == OWSInteractionType_IncomingMessage) { + TSIncomingMessage *incomingMessage = (TSIncomingMessage *)self.interaction; + TSIncomingMessage *previousIncomingMessage = (TSIncomingMessage *)previousLayoutItem.interaction; + if ([incomingMessage.authorId isEqualToString:previousIncomingMessage.authorId]) { + return 2.f; + } + } else if (self.interaction.interactionType == OWSInteractionType_OutgoingMessage + && previousLayoutItem.interaction.interactionType == OWSInteractionType_OutgoingMessage) { + return 2.f; + } + // TODO: - return 4.f; + return 10.f; } - (ConversationViewCell *)dequeueCellForCollectionView:(UICollectionView *)collectionView diff --git a/Signal/src/ViewControllers/HomeView/HomeViewCell.m b/Signal/src/ViewControllers/HomeView/HomeViewCell.m index fa9feb95a..90228c83c 100644 --- a/Signal/src/ViewControllers/HomeView/HomeViewCell.m +++ b/Signal/src/ViewControllers/HomeView/HomeViewCell.m @@ -233,7 +233,6 @@ NS_ASSUME_NONNULL_BEGIN relation:NSLayoutRelationGreaterThanOrEqual], [self.unreadBadge autoSetDimension:ALDimensionHeight toSize:unreadBadgeHeight], ]]; - }]; const CGFloat kMinVMargin = 5;