From dca6aed6ee356709aba4430b1f55d816015b6e4e Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Mon, 13 May 2019 16:21:07 +1000 Subject: [PATCH] Fix message cell sizing issue --- .../ConversationView/Cells/OWSMessageCell.m | 50 ++++++++++++------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m index 418820f96..15cc78e25 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m @@ -18,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) OWSMessageHeaderView *headerView; @property (nonatomic) OWSMessageBubbleView *messageBubbleView; +@property (nonatomic) NSLayoutConstraint *messageBubbleViewBottomConstraint; @property (nonatomic) AvatarImageView *avatarView; @property (nonatomic, nullable) FriendRequestView *friendRequestView; @property (nonatomic, nullable) UIImageView *sendFailureBadgeView; @@ -60,7 +61,7 @@ NS_ASSUME_NONNULL_BEGIN [self.avatarView autoSetDimension:ALDimensionWidth toSize:self.avatarSize]; [self.avatarView autoSetDimension:ALDimensionHeight toSize:self.avatarSize]; - [self.messageBubbleView autoPinBottomToSuperviewMarginWithInset:0]; + self.messageBubbleViewBottomConstraint = [self.messageBubbleView autoPinBottomToSuperviewMarginWithInset:0]; self.contentView.userInteractionEnabled = YES; @@ -114,6 +115,19 @@ NS_ASSUME_NONNULL_BEGIN return self.viewItem.interaction.interactionType == OWSInteractionType_OutgoingMessage; } +- (BOOL)isIncomingFriendRequest { + if ([self.viewItem.interaction isKindOfClass:TSIncomingMessage.class]) { + // TODO: Enable this when possible + // ======== +// TSIncomingMessage *message = (TSIncomingMessage *)self.message; +// return message.isFriendRequest + // ======== + return YES; + } else { + return NO; + } +} + - (BOOL)shouldHaveSendFailureBadge { if (![self.viewItem.interaction isKindOfClass:[TSOutgoingMessage class]]) { @@ -133,6 +147,7 @@ NS_ASSUME_NONNULL_BEGIN OWSAssertDebug([self.viewItem.interaction isKindOfClass:[TSMessage class]]); OWSAssertDebug(self.messageBubbleView); + [self.messageBubbleViewBottomConstraint setActive:YES]; self.messageBubbleView.viewItem = self.viewItem; self.messageBubbleView.cellMediaCache = self.delegate.cellMediaCache; [self.messageBubbleView configureViews]; @@ -166,19 +181,18 @@ NS_ASSUME_NONNULL_BEGIN relation:NSLayoutRelationGreaterThanOrEqual], ]]; - if ([self.viewItem.interaction isKindOfClass:TSIncomingMessage.class]) { - TSIncomingMessage *message = (TSIncomingMessage *)self.message; - if (YES) { // TODO: message.isFriendRequest - self.friendRequestView = [FriendRequestView new]; - self.friendRequestView.message = message; - self.friendRequestView.delegate = self.friendRequestViewDelegate; - [self.contentView addSubview:self.friendRequestView]; - [self.viewConstraints addObjectsFromArray:@[ - [self.friendRequestView autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:self.conversationStyle.gutterLeading], - [self.friendRequestView autoPinEdgeToSuperviewEdge:ALEdgeTrailing withInset:self.conversationStyle.gutterTrailing], - [self.friendRequestView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.messageBubbleView withOffset:12.f] - ]]; - } + if (self.isIncomingFriendRequest) { // TODO: message.isFriendRequest + self.friendRequestView = [FriendRequestView new]; + self.friendRequestView.message = (TSIncomingMessage *)self.message; + self.friendRequestView.delegate = self.friendRequestViewDelegate; + [self.contentView addSubview:self.friendRequestView]; + [self.messageBubbleViewBottomConstraint setActive:NO]; + [self.viewConstraints addObjectsFromArray:@[ + [self.friendRequestView autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:self.conversationStyle.gutterLeading], + [self.friendRequestView autoPinEdgeToSuperviewEdge:ALEdgeTrailing withInset:self.conversationStyle.gutterTrailing], + [self.friendRequestView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:self.messageBubbleView withOffset:12.f], + [self.friendRequestView autoPinEdgeToSuperviewEdge:ALEdgeBottom] + ]]; } } else { if (self.shouldHaveSendFailureBadge) { @@ -355,11 +369,11 @@ NS_ASSUME_NONNULL_BEGIN if (self.shouldHaveSendFailureBadge) { cellSize.width += self.sendFailureBadgeSize + self.sendFailureBadgeSpacing; } - - if (self.friendRequestView != nil) { - cellSize.height += 118.f; // TODO: Measure dynamically - } + if (self.isIncomingFriendRequest) { + cellSize.height += 118; // TODO: Measure dynamically + } + cellSize = CGSizeCeil(cellSize); return cellSize;