|  |  | @ -522,6 +522,9 @@ NS_ASSUME_NONNULL_BEGIN | 
			
		
	
		
		
			
				
					
					|  |  |  | // cell is no longer visible. |  |  |  | // cell is no longer visible. | 
			
		
	
		
		
			
				
					
					|  |  |  | - (void)ensureViewMediaState |  |  |  | - (void)ensureViewMediaState | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     CGSize mediaSize = [self mediaBubbleSizeForContentWidth:self.contentWidth]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     [self.contentConstraints addObjectsFromArray:[self.mediaMaskingView autoSetDimensionsToSize:mediaSize]]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (!self.isCellVisible) { |  |  |  |     if (!self.isCellVisible) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Eagerly unload. |  |  |  |         // Eagerly unload. | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.stillImageView.image = nil; |  |  |  |         self.stillImageView.image = nil; | 
			
		
	
	
		
		
			
				
					|  |  | @ -781,6 +784,9 @@ NS_ASSUME_NONNULL_BEGIN | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.textView.shouldIgnoreEvents = NO; |  |  |  |         self.textView.shouldIgnoreEvents = NO; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     OWSAssert(self.contentWidth); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     CGSize textBubbleSize = [self textBubbleSizeForContentWidth:self.contentWidth]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (self.displayableText.isTextTruncated) { |  |  |  |     if (self.displayableText.isTextTruncated) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.tapForMoreLabel = [UILabel new]; |  |  |  |         self.tapForMoreLabel = [UILabel new]; | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.tapForMoreLabel.text = NSLocalizedString(@"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE", |  |  |  |         self.tapForMoreLabel.text = NSLocalizedString(@"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE", | 
			
		
	
	
		
		
			
				
					|  |  | @ -791,6 +797,8 @@ NS_ASSUME_NONNULL_BEGIN | 
			
		
	
		
		
			
				
					
					|  |  |  |         [self.textBubbleImageView addSubview:self.tapForMoreLabel]; |  |  |  |         [self.textBubbleImageView addSubview:self.tapForMoreLabel]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         [self.contentConstraints addObjectsFromArray:@[ |  |  |  |         [self.contentConstraints addObjectsFromArray:@[ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             [self.textBubbleImageView autoSetDimension:ALDimensionWidth toSize:textBubbleSize.width], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             [self.textBubbleImageView autoSetDimension:ALDimensionHeight toSize:textBubbleSize.height], | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self.textView autoPinLeadingToSuperviewWithMargin:self.textLeadingMargin], |  |  |  |             [self.textView autoPinLeadingToSuperviewWithMargin:self.textLeadingMargin], | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self.textView autoPinTrailingToSuperviewWithMargin:self.textTrailingMargin], |  |  |  |             [self.textView autoPinTrailingToSuperviewWithMargin:self.textTrailingMargin], | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self.textView autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:self.textVMargin], |  |  |  |             [self.textView autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:self.textVMargin], | 
			
		
	
	
		
		
			
				
					|  |  | @ -802,9 +810,6 @@ NS_ASSUME_NONNULL_BEGIN | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self.tapForMoreLabel autoSetDimension:ALDimensionHeight toSize:self.tapForMoreHeight], |  |  |  |             [self.tapForMoreLabel autoSetDimension:ALDimensionHeight toSize:self.tapForMoreHeight], | 
			
		
	
		
		
			
				
					
					|  |  |  |         ]]; |  |  |  |         ]]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } else { |  |  |  |     } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |         OWSAssert(self.contentWidth); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         CGSize textBubbleSize = [self textBubbleSizeForContentWidth:self.contentWidth]; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         [self.contentConstraints addObjectsFromArray:@[ |  |  |  |         [self.contentConstraints addObjectsFromArray:@[ | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self.textBubbleImageView autoSetDimension:ALDimensionWidth toSize:textBubbleSize.width], |  |  |  |             [self.textBubbleImageView autoSetDimension:ALDimensionWidth toSize:textBubbleSize.width], | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self.textBubbleImageView autoSetDimension:ALDimensionHeight toSize:textBubbleSize.height], |  |  |  |             [self.textBubbleImageView autoSetDimension:ALDimensionHeight toSize:textBubbleSize.height], | 
			
		
	
	
		
		
			
				
					|  |  | @ -934,12 +939,10 @@ NS_ASSUME_NONNULL_BEGIN | 
			
		
	
		
		
			
				
					
					|  |  |  |     view.userInteractionEnabled = NO; |  |  |  |     view.userInteractionEnabled = NO; | 
			
		
	
		
		
			
				
					
					|  |  |  |     [self.mediaMaskingView addSubview:view]; |  |  |  |     [self.mediaMaskingView addSubview:view]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     CGSize mediaSize = [self mediaBubbleSizeForContentWidth:self.contentWidth]; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     [self.contentConstraints |  |  |  |     [self.contentConstraints | 
			
		
	
		
		
			
				
					
					|  |  |  |         addObject:[self.mediaMaskingView |  |  |  |         addObject:[self.mediaMaskingView | 
			
		
	
		
		
			
				
					
					|  |  |  |                       autoPinEdgeToSuperviewEdge:(self.isIncoming ? ALEdgeLeading : ALEdgeTrailing)]]; |  |  |  |                       autoPinEdgeToSuperviewEdge:(self.isIncoming ? ALEdgeLeading : ALEdgeTrailing)]]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     [self.contentConstraints addObjectsFromArray:[self.mediaMaskingView autoSetDimensionsToSize:mediaSize]]; |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     [self.contentConstraints addObjectsFromArray:[view autoPinEdgesToSuperviewMargins]]; |  |  |  |     [self.contentConstraints addObjectsFromArray:[view autoPinEdgesToSuperviewMargins]]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     [self cropMediaViewToBubbbleShape:view]; |  |  |  |     [self cropMediaViewToBubbbleShape:view]; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |