Fixed a bug where the most recent message couldn't be interacted with due to message request UI changes

pull/559/head
Morgan Pretty 4 years ago
parent 47314bd639
commit 6f1a8fcdc5

@ -1115,7 +1115,26 @@ extension ConversationVC {
// Hide the 'messageRequestView' since the request has been approved and force a config // Hide the 'messageRequestView' since the request has been approved and force a config
// sync to propagate the contact approval state (both must run on the main thread) // sync to propagate the contact approval state (both must run on the main thread)
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
self?.messageRequestView.isHidden = true let messageRequestViewWasVisible: Bool = (self?.messageRequestView.isHidden == false)
UIView.animate(withDuration: 0.3) {
self?.messageRequestView.isHidden = true
self?.scrollButtonMessageRequestsBottomConstraint?.isActive = false
self?.scrollButtonBottomConstraint?.isActive = true
// Update the table content inset and offset to account for the dissapearance of
// the messageRequestsView
if messageRequestViewWasVisible {
let messageRequestsOffset: CGFloat = ((self?.messageRequestView.bounds.height ?? 0) + 16)
let oldContentInset: UIEdgeInsets = (self?.messagesTableView.contentInset ?? UIEdgeInsets.zero)
self?.messagesTableView.contentInset = UIEdgeInsets(
top: 0,
leading: 0,
bottom: max(oldContentInset.bottom - messageRequestsOffset, 0),
trailing: 0
)
}
}
// Send a sync message with the details of the contact // Send a sync message with the details of the contact
if let appDelegate = UIApplication.shared.delegate as? AppDelegate { if let appDelegate = UIApplication.shared.delegate as? AppDelegate {

@ -1,4 +1,5 @@
import SessionUIKit import SessionUIKit
import SessionMessagingKit
// TODO: // TODO:
// Slight paging glitch when scrolling up and loading more content // Slight paging glitch when scrolling up and loading more content
@ -12,8 +13,9 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
let focusedMessageID: String? // This is used for global search let focusedMessageID: String? // This is used for global search
var focusedMessageIndexPath: IndexPath? var focusedMessageIndexPath: IndexPath?
var unreadViewItems: [ConversationViewItem] = [] var unreadViewItems: [ConversationViewItem] = []
var scrollButtonConstraint: NSLayoutConstraint? var scrollButtonBottomConstraint: NSLayoutConstraint?
var footerControlsStackViewBottomConstraint: NSLayoutConstraint? var scrollButtonMessageRequestsBottomConstraint: NSLayoutConstraint?
var messageRequestsViewBotomConstraint: NSLayoutConstraint?
// Search // Search
var isShowingSearchUI = false var isShowingSearchUI = false
var lastSearchedText: String? var lastSearchedText: String?
@ -303,21 +305,22 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
addOrRemoveBlockedBanner() addOrRemoveBlockedBanner()
// Message requests view & scroll to bottom // Message requests view & scroll to bottom
view.addSubview(footerControlsStackView) view.addSubview(scrollButton)
view.addSubview(messageRequestView)
footerControlsStackView.addArrangedSubview(scrollButton)
footerControlsStackView.addArrangedSubview(messageRequestView)
messageRequestView.addSubview(messageRequestDescriptionLabel) messageRequestView.addSubview(messageRequestDescriptionLabel)
messageRequestView.addSubview(messageRequestAcceptButton) messageRequestView.addSubview(messageRequestAcceptButton)
messageRequestView.addSubview(messageRequestDeleteButton) messageRequestView.addSubview(messageRequestDeleteButton)
scrollButton.pin(.right, to: .right, of: footerControlsStackView, withInset: -20) scrollButton.pin(.right, to: .right, of: view, withInset: -20)
messageRequestView.pin(.left, to: .left, of: footerControlsStackView) messageRequestView.pin(.left, to: .left, of: view)
messageRequestView.pin(.right, to: .right, of: footerControlsStackView) messageRequestView.pin(.right, to: .right, of: view)
footerControlsStackView.pin(.left, to: .left, of: view) self.messageRequestsViewBotomConstraint = messageRequestView.pin(.bottom, to: .bottom, of: view, withInset: -16)
footerControlsStackView.pin(.right, to: .right, of: view) self.scrollButtonBottomConstraint = scrollButton.pin(.bottom, to: .bottom, of: view, withInset: -16)
self.footerControlsStackViewBottomConstraint = footerControlsStackView.pin(.bottom, to: .bottom, of: view, withInset: -16) self.scrollButtonBottomConstraint?.isActive = false // Note: Need to disable this to avoid a conflict with the other bottom constraint
self.scrollButtonMessageRequestsBottomConstraint = scrollButton.pin(.bottom, to: .top, of: messageRequestView, withInset: -16)
self.scrollButtonMessageRequestsBottomConstraint?.isActive = thread.isMessageRequest()
self.scrollButtonBottomConstraint?.isActive = !thread.isMessageRequest()
messageRequestDescriptionLabel.pin(.top, to: .top, of: messageRequestView, withInset: 10) messageRequestDescriptionLabel.pin(.top, to: .top, of: messageRequestView, withInset: 10)
messageRequestDescriptionLabel.pin(.left, to: .left, of: messageRequestView, withInset: 40) messageRequestDescriptionLabel.pin(.left, to: .left, of: messageRequestView, withInset: 40)
@ -529,7 +532,8 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
) )
let newContentOffsetY: CGFloat = (messagesTableView.contentOffset.y + (newContentInset.bottom - oldContentInset.bottom)) let newContentOffsetY: CGFloat = (messagesTableView.contentOffset.y + (newContentInset.bottom - oldContentInset.bottom))
let changes = { [weak self] in let changes = { [weak self] in
self?.footerControlsStackViewBottomConstraint?.constant = -(keyboardTop + 16) self?.scrollButtonBottomConstraint?.constant = -(keyboardTop + 16)
self?.messageRequestsViewBotomConstraint?.constant = -(keyboardTop + 16)
self?.messagesTableView.contentInset = newContentInset self?.messagesTableView.contentInset = newContentInset
self?.messagesTableView.contentOffset.y = newContentOffsetY self?.messagesTableView.contentOffset.y = newContentOffsetY
@ -574,7 +578,8 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
delay: 0, delay: 0,
options: options, options: options,
animations: { [weak self] in animations: { [weak self] in
self?.footerControlsStackViewBottomConstraint?.constant = -(keyboardTop + 16) self?.scrollButtonBottomConstraint?.constant = -(keyboardTop + 16)
self?.messageRequestsViewBotomConstraint?.constant = -(keyboardTop + 16)
let scrollButtonOpacity: CGFloat = (self?.getScrollButtonOpacity() ?? 0) let scrollButtonOpacity: CGFloat = (self?.getScrollButtonOpacity() ?? 0)
self?.scrollButton.alpha = scrollButtonOpacity self?.scrollButton.alpha = scrollButtonOpacity

Loading…
Cancel
Save