mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
make sure captioned attachment doesn't grow too large
// FREEBIE
This commit is contained in:
parent
2c20cb9e7b
commit
0ea3a36559
|
@ -247,8 +247,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
[self.footerView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.payloadView];
|
[self.footerView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.payloadView];
|
||||||
|
|
||||||
[self.mediaMaskingView autoPinEdgeToSuperviewEdge:ALEdgeTop];
|
[self.mediaMaskingView autoPinEdgeToSuperviewEdge:ALEdgeTop];
|
||||||
[self.mediaMaskingView autoPinEdgeToSuperviewEdge:ALEdgeLeading];
|
|
||||||
[self.mediaMaskingView autoPinEdgeToSuperviewEdge:ALEdgeTrailing];
|
|
||||||
|
|
||||||
[self.textBubbleImageView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.mediaMaskingView];
|
[self.textBubbleImageView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.mediaMaskingView];
|
||||||
[self.textBubbleImageView autoPinEdgeToSuperviewEdge:ALEdgeBottom];
|
[self.textBubbleImageView autoPinEdgeToSuperviewEdge:ALEdgeBottom];
|
||||||
|
@ -928,7 +926,15 @@ 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
|
||||||
|
addObject:[self.mediaMaskingView
|
||||||
|
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];
|
||||||
if (self.isMediaBeingSent) {
|
if (self.isMediaBeingSent) {
|
||||||
view.layer.opacity = 0.75f;
|
view.layer.opacity = 0.75f;
|
||||||
|
@ -985,6 +991,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
- (CGSize)textBubbleSizeForContentWidth:(int)contentWidth
|
- (CGSize)textBubbleSizeForContentWidth:(int)contentWidth
|
||||||
{
|
{
|
||||||
|
if (!self.hasText) {
|
||||||
|
return CGSizeZero;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL isRTL = self.isRTL;
|
BOOL isRTL = self.isRTL;
|
||||||
CGFloat leftMargin = isRTL ? self.textTrailingMargin : self.textLeadingMargin;
|
CGFloat leftMargin = isRTL ? self.textTrailingMargin : self.textLeadingMargin;
|
||||||
CGFloat rightMargin = isRTL ? self.textLeadingMargin : self.textTrailingMargin;
|
CGFloat rightMargin = isRTL ? self.textLeadingMargin : self.textTrailingMargin;
|
||||||
|
@ -1004,28 +1014,15 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
return textViewSize;
|
return textViewSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (int)maxMessageWidthForContentWidth:(int)contentWidth
|
- (CGSize)mediaBubbleSizeForContentWidth:(int)contentWidth
|
||||||
{
|
{
|
||||||
return (int)floor(contentWidth * 0.8f);
|
|
||||||
}
|
|
||||||
- (CGSize)cellSizeForViewWidth:(int)viewWidth contentWidth:(int)contentWidth
|
|
||||||
{
|
|
||||||
OWSAssert(self.viewItem);
|
|
||||||
OWSAssert([self.viewItem.interaction isKindOfClass:[TSMessage class]]);
|
|
||||||
|
|
||||||
|
|
||||||
const int maxMessageWidth = [self maxMessageWidthForContentWidth:contentWidth];
|
const int maxMessageWidth = [self maxMessageWidthForContentWidth:contentWidth];
|
||||||
CGSize mediaContentSize = CGSizeZero;
|
|
||||||
CGSize textContentSize = CGSizeZero;
|
|
||||||
|
|
||||||
if (self.hasText) {
|
|
||||||
textContentSize = [self textBubbleSizeForContentWidth:contentWidth];
|
|
||||||
}
|
|
||||||
switch (self.cellType) {
|
switch (self.cellType) {
|
||||||
case OWSMessageCellType_Unknown:
|
case OWSMessageCellType_Unknown:
|
||||||
case OWSMessageCellType_TextMessage:
|
case OWSMessageCellType_TextMessage:
|
||||||
case OWSMessageCellType_OversizeTextMessage: {
|
case OWSMessageCellType_OversizeTextMessage: {
|
||||||
break;
|
return CGSizeZero;
|
||||||
}
|
}
|
||||||
case OWSMessageCellType_StillImage:
|
case OWSMessageCellType_StillImage:
|
||||||
case OWSMessageCellType_AnimatedImage:
|
case OWSMessageCellType_AnimatedImage:
|
||||||
|
@ -1052,19 +1049,29 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
mediaWidth = (CGFloat)round(maxMediaWidth);
|
mediaWidth = (CGFloat)round(maxMediaWidth);
|
||||||
mediaHeight = (CGFloat)round(maxMediaWidth / contentAspectRatio);
|
mediaHeight = (CGFloat)round(maxMediaWidth / contentAspectRatio);
|
||||||
}
|
}
|
||||||
mediaContentSize = CGSizeMake(mediaWidth, mediaHeight);
|
return CGSizeMake(mediaWidth, mediaHeight);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case OWSMessageCellType_Audio:
|
case OWSMessageCellType_Audio:
|
||||||
mediaContentSize = CGSizeMake(maxMessageWidth, OWSAudioMessageView.bubbleHeight);
|
return CGSizeMake(maxMessageWidth, OWSAudioMessageView.bubbleHeight);
|
||||||
break;
|
|
||||||
case OWSMessageCellType_GenericAttachment:
|
case OWSMessageCellType_GenericAttachment:
|
||||||
mediaContentSize = CGSizeMake(maxMessageWidth, [OWSGenericAttachmentView bubbleHeight]);
|
return CGSizeMake(maxMessageWidth, [OWSGenericAttachmentView bubbleHeight]);
|
||||||
break;
|
|
||||||
case OWSMessageCellType_DownloadingAttachment:
|
case OWSMessageCellType_DownloadingAttachment:
|
||||||
mediaContentSize = CGSizeMake(200, 90);
|
return CGSizeMake(200, 90);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (int)maxMessageWidthForContentWidth:(int)contentWidth
|
||||||
|
{
|
||||||
|
return (int)floor(contentWidth * 0.8f);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CGSize)cellSizeForViewWidth:(int)viewWidth contentWidth:(int)contentWidth
|
||||||
|
{
|
||||||
|
OWSAssert(self.viewItem);
|
||||||
|
OWSAssert([self.viewItem.interaction isKindOfClass:[TSMessage class]]);
|
||||||
|
|
||||||
|
CGSize mediaContentSize = [self mediaBubbleSizeForContentWidth:contentWidth];
|
||||||
|
CGSize textContentSize = [self textBubbleSizeForContentWidth:contentWidth];
|
||||||
|
|
||||||
CGFloat cellContentWidth = fmax(mediaContentSize.width, textContentSize.width);
|
CGFloat cellContentWidth = fmax(mediaContentSize.width, textContentSize.width);
|
||||||
CGFloat cellContentHeight = mediaContentSize.height + textContentSize.height;
|
CGFloat cellContentHeight = mediaContentSize.height + textContentSize.height;
|
||||||
|
|
Loading…
Reference in a new issue