From 3b894f2653d05036c44cc0d016861a1f638253f2 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Mon, 5 Feb 2024 12:52:35 +0100 Subject: [PATCH] Fix collectionViewImageGrid with text and scroll to bottom when chat room view is disapear --- .../ChatConversationTableViewSwift.swift | 3 ++ .../Chat/Views/MultilineMessageCell.swift | 29 ++++++++++++++----- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift b/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift index 102af5d6b..5c8c3ade0 100644 --- a/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift +++ b/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift @@ -113,6 +113,9 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour } override func viewWillDisappear(_ animated: Bool) { + if ChatConversationTableViewModel.sharedModel.getNBMessages() > 0 { + scrollToBottom(animated: false) + } NotificationCenter.default.removeObserver(self, name: Notification.Name("LinphoneFriendPresenceUpdate"), object: nil) NotificationCenter.default.removeObserver(self) } diff --git a/Classes/Swift/Chat/Views/MultilineMessageCell.swift b/Classes/Swift/Chat/Views/MultilineMessageCell.swift index 356982784..986debe3f 100644 --- a/Classes/Swift/Chat/Views/MultilineMessageCell.swift +++ b/Classes/Swift/Chat/Views/MultilineMessageCell.swift @@ -69,6 +69,8 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource, var recordingWaveConstraints: [NSLayoutConstraint] = [] var recordingWaveConstraintsWithMediaGrid: [NSLayoutConstraint] = [] var meetingConstraints: [NSLayoutConstraint] = [] + var constraintGridWithTextLeading : NSLayoutConstraint? = nil + var constraintGridWithTextTrailing : NSLayoutConstraint? = nil var eventMessageLineView: UIView = UIView(frame: .zero) var eventMessageLabelView: UIView = UIView(frame: .zero) @@ -430,18 +432,20 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource, collectionViewImagesGrid.translatesAutoresizingMaskIntoConstraints = false imagesGridConstraints = [ collectionViewImagesGrid.topAnchor.constraint(equalTo: contentMediaViewBubble.topAnchor, constant: labelInset.top), - collectionViewImagesGrid.bottomAnchor.constraint(equalTo: contentMediaViewBubble.bottomAnchor, constant: labelInset.bottom), - collectionViewImagesGrid.leadingAnchor.constraint(equalTo: contentMediaViewBubble.leadingAnchor, constant: labelInset.left), - collectionViewImagesGrid.trailingAnchor.constraint(equalTo: contentMediaViewBubble.trailingAnchor, constant: labelInset.right), + collectionViewImagesGrid.bottomAnchor.constraint(equalTo: contentMediaViewBubble.bottomAnchor, constant: labelInset.bottom) ] imagesGridConstraintsWithRecording = [ collectionViewImagesGrid.topAnchor.constraint(equalTo: contentMediaViewBubble.topAnchor, constant: labelInset.top + 50), - collectionViewImagesGrid.bottomAnchor.constraint(equalTo: contentMediaViewBubble.bottomAnchor, constant: labelInset.bottom), - collectionViewImagesGrid.leadingAnchor.constraint(equalTo: contentMediaViewBubble.leadingAnchor, constant: labelInset.left), - collectionViewImagesGrid.trailingAnchor.constraint(equalTo: contentMediaViewBubble.trailingAnchor, constant: labelInset.right), + collectionViewImagesGrid.bottomAnchor.constraint(equalTo: contentMediaViewBubble.bottomAnchor, constant: labelInset.bottom) ] + + constraintGridWithTextLeading = collectionViewImagesGrid.leadingAnchor.constraint(equalTo: contentMediaViewBubble.leadingAnchor, constant: labelInset.left) + constraintGridWithTextTrailing = collectionViewImagesGrid.trailingAnchor.constraint(equalTo: contentMediaViewBubble.trailingAnchor, constant: labelInset.right) + constraintGridWithTextLeading!.isActive = true + constraintGridWithTextTrailing!.isActive = true + collectionViewImagesGrid.dataSource = self collectionViewImagesGrid.delegate = self collectionViewImagesGrid.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellImagesGridMessage") @@ -1405,8 +1409,19 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource, if imagesGridCollectionView.count > 0 { self.collectionViewImagesGrid.layoutIfNeeded() } + if imagesGridCollectionView.count == 1 && recordingView.isHidden == true { - collectionViewImagesGrid.width(138).done() + if label.isHidden { + collectionViewImagesGrid.width(138).done() + } else { + collectionViewImagesGrid.width(138).done() + if event.chatMessage?.isOutgoing == true { + constraintGridWithTextLeading!.isActive = false + } else { + constraintGridWithTextTrailing!.isActive = false + } + label.minWidth(138).done() + } } if imagesGridCollectionView.count == 2 {