From 8a6ca8c0128c51176675b18c4a1236b426440ab4 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 26 May 2017 11:33:10 -0400 Subject: [PATCH] Fix glitch around downloading attachments. // FREEBIE --- .../Models/OWSMessagesBubblesSizeCalculator.m | 68 +------------------ 1 file changed, 3 insertions(+), 65 deletions(-) diff --git a/Signal/src/Models/OWSMessagesBubblesSizeCalculator.m b/Signal/src/Models/OWSMessagesBubblesSizeCalculator.m index 3286ad413..9d5834802 100644 --- a/Signal/src/Models/OWSMessagesBubblesSizeCalculator.m +++ b/Signal/src/Models/OWSMessagesBubblesSizeCalculator.m @@ -72,7 +72,7 @@ NS_ASSUME_NONNULL_BEGIN } else { // END HACK iOS10EmojiBug see: https://github.com/WhisperSystems/Signal-iOS/issues/1368 - return [self simple_messageBubbleSizeForMessageData:messageData atIndexPath:indexPath withLayout:layout]; + return [super messageBubbleSizeForMessageData:messageData atIndexPath:indexPath withLayout:layout]; } } @@ -126,8 +126,7 @@ NS_ASSUME_NONNULL_BEGIN withLayout:(JSQMessagesCollectionViewFlowLayout *)layout { UIFont *emojiFont = [UIFont fontWithName:@".AppleColorEmojiUI" size:layout.messageBubbleFont.pointSize]; - CGSize superSize = - [self simple_messageBubbleSizeForMessageData:messageData atIndexPath:indexPath withLayout:layout]; + CGSize superSize = [super messageBubbleSizeForMessageData:messageData atIndexPath:indexPath withLayout:layout]; int lines = (int)floor(superSize.height / emojiFont.lineHeight); // Add an extra pixel per line to fit the emoji. @@ -256,68 +255,7 @@ NS_ASSUME_NONNULL_BEGIN OWSAssert(((id)messageData).interaction); OWSAssert(((id)messageData).interaction.uniqueId); - return ((id)messageData).interaction.uniqueId; -} - -// This method was lifted from JSQMessagesBubblesSizeCalculator and -// modified to use interaction.uniqueId as cache keys. -- (CGSize)simple_messageBubbleSizeForMessageData:(id)messageData - atIndexPath:(NSIndexPath *)indexPath - withLayout:(JSQMessagesCollectionViewFlowLayout *)layout -{ - id cacheKey = [self cacheKeyForMessageData:messageData]; - - NSValue *cachedSize = [self.cache objectForKey:cacheKey]; - if (cachedSize != nil) { - return [cachedSize CGSizeValue]; - } - - CGSize finalSize = CGSizeZero; - - if ([messageData isMediaMessage]) { - finalSize = [[messageData media] mediaViewDisplaySize]; - } else { - CGSize avatarSize = [self jsq_avatarSizeForMessageData:messageData withLayout:layout]; - - // from the cell xibs, there is a 2 point space between avatar and bubble - CGFloat spacingBetweenAvatarAndBubble = 2.0f; - CGFloat horizontalContainerInsets = layout.messageBubbleTextViewTextContainerInsets.left - + layout.messageBubbleTextViewTextContainerInsets.right; - CGFloat horizontalFrameInsets - = layout.messageBubbleTextViewFrameInsets.left + layout.messageBubbleTextViewFrameInsets.right; - - CGFloat horizontalInsetsTotal - = horizontalContainerInsets + horizontalFrameInsets + spacingBetweenAvatarAndBubble; - CGFloat maximumTextWidth = [self textBubbleWidthForLayout:layout] - avatarSize.width - - layout.messageBubbleLeftRightMargin - horizontalInsetsTotal; - - CGRect stringRect = [[messageData text] - boundingRectWithSize:CGSizeMake(maximumTextWidth, CGFLOAT_MAX) - options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) - attributes:@{ NSFontAttributeName : layout.messageBubbleFont } - context:nil]; - - CGSize stringSize = CGRectIntegral(stringRect).size; - - CGFloat verticalContainerInsets = layout.messageBubbleTextViewTextContainerInsets.top - + layout.messageBubbleTextViewTextContainerInsets.bottom; - CGFloat verticalFrameInsets - = layout.messageBubbleTextViewFrameInsets.top + layout.messageBubbleTextViewFrameInsets.bottom; - - // add extra 2 points of space (`self.additionalInset`), because `boundingRectWithSize:` is slightly off - // not sure why. magix. (shrug) if you know, submit a PR - CGFloat verticalInsets = verticalContainerInsets + verticalFrameInsets + self.additionalInset; - - // same as above, an extra 2 points of magix - CGFloat finalWidth - = MAX(stringSize.width + horizontalInsetsTotal, self.minimumBubbleWidth) + self.additionalInset; - - finalSize = CGSizeMake(finalWidth, stringSize.height + verticalInsets); - } - - [self.cache setObject:[NSValue valueWithCGSize:finalSize] forKey:cacheKey]; - - return finalSize; + return @([messageData messageHash]); } @end