Fix message cell sizing issue

This commit is contained in:
Niels Andriesse 2019-05-13 16:21:07 +10:00
parent 3dda1f17e1
commit dca6aed6ee

View file

@ -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;