From e01579ed448970916694058a1b544c69c301d157 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 10 Jul 2018 13:54:08 -0400 Subject: [PATCH] Tweak disappearing messages indicator. --- .../Cells/OWSMessageFooterView.m | 12 ++++++++++-- .../ConversationViewController.m | 18 ++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m index 6d118046e..5a1628a04 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m @@ -40,12 +40,20 @@ NS_ASSUME_NONNULL_BEGIN self.axis = UILayoutConstraintAxisHorizontal; self.spacing = self.hSpacing; self.alignment = UIStackViewAlignmentCenter; + self.distribution = UIStackViewDistributionEqualSpacing; + + UIStackView *leftStackView = [UIStackView new]; + leftStackView.axis = UILayoutConstraintAxisHorizontal; + leftStackView.spacing = self.hSpacing; + leftStackView.alignment = UIStackViewAlignmentCenter; + [self addArrangedSubview:leftStackView]; self.timestampLabel = [UILabel new]; - [self addArrangedSubview:self.timestampLabel]; + [leftStackView addArrangedSubview:self.timestampLabel]; self.messageTimerView = [OWSMessageTimerView new]; - [self addArrangedSubview:self.messageTimerView]; + [self.messageTimerView setContentHuggingHigh]; + [leftStackView addArrangedSubview:self.messageTimerView]; self.statusIndicatorImageView = [UIImageView new]; [self.statusIndicatorImageView setContentHuggingHigh]; diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index a61cfb319..63c1cbd70 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -4807,6 +4807,7 @@ typedef enum : NSUInteger { TSOutgoingMessage *outgoingMessage = (TSOutgoingMessage *)viewItem.interaction; MessageReceiptStatus receiptStatus = [MessageRecipientStatusUtils recipientStatusWithOutgoingMessage:outgoingMessage]; + BOOL isDisappearingMessage = outgoingMessage.shouldStartExpireTimer; if (nextViewItem && nextViewItem.interaction.interactionType == interactionType) { TSOutgoingMessage *nextOutgoingMessage = (TSOutgoingMessage *)nextViewItem.interaction; @@ -4816,10 +4817,12 @@ typedef enum : NSUInteger { // We can skip the "outgoing message status" footer if the next message // has the same footer and no "date break" separates us... - // ...but always show "failed to send" status. - shouldHideFooter = ([timestampText isEqualToString:nextTimestampText] - && receiptStatus == nextReceiptStatus - && outgoingMessage.messageState != TSOutgoingMessageStateFailed && !nextViewItem.shouldShowDate); + // ...but always show "failed to send" status + // ...and always show the "disappearing messages" animation. + shouldHideFooter + = ([timestampText isEqualToString:nextTimestampText] && receiptStatus == nextReceiptStatus + && outgoingMessage.messageState != TSOutgoingMessageStateFailed && !nextViewItem.shouldShowDate + && !isDisappearingMessage); } // clustering @@ -4843,6 +4846,7 @@ typedef enum : NSUInteger { TSIncomingMessage *incomingMessage = (TSIncomingMessage *)viewItem.interaction; NSString *incomingSenderId = incomingMessage.authorId; OWSAssert(incomingSenderId.length > 0); + BOOL isDisappearingMessage = incomingMessage.shouldStartExpireTimer; NSString *_Nullable nextIncomingSenderId = nil; if (nextViewItem && nextViewItem.interaction.interactionType == interactionType) { @@ -4855,8 +4859,10 @@ typedef enum : NSUInteger { NSString *nextTimestampText = [DateUtil formatTimestampShort:nextViewItem.interaction.timestamp]; // We can skip the "incoming message status" footer in a cluster if the next message // has the same footer and no "date break" separates us. - shouldHideFooter = [timestampText isEqualToString:nextTimestampText] && !nextViewItem.shouldShowDate && - [NSObject isNullableObject:nextIncomingSenderId equalTo:incomingSenderId]; + // ...but always show the "disappearing messages" animation. + shouldHideFooter = ([timestampText isEqualToString:nextTimestampText] && !nextViewItem.shouldShowDate && + [NSObject isNullableObject:nextIncomingSenderId equalTo:incomingSenderId] + && !isDisappearingMessage); } // clustering