diff --git a/Riot/Modules/Room/Views/BubbleCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift b/Riot/Modules/Room/Views/BubbleCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift index ff71c81bf..9a2decc63 100644 --- a/Riot/Modules/Room/Views/BubbleCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift +++ b/Riot/Modules/Room/Views/BubbleCells/Styles/Bubble/BubbleRoomTimelineCellDecorator.swift @@ -170,44 +170,49 @@ class BubbleRoomTimelineCellDecorator: PlainRoomTimelineCellDecorator { cellData: RoomBubbleCellData, contentViewPositionY: CGFloat) { - cell.addTemporarySubview(urlPreviewView) - - let cellContentView = cell.contentView - - urlPreviewView.translatesAutoresizingMaskIntoConstraints = false - urlPreviewView.availableWidth = cellData.maxTextViewWidth - cellContentView.addSubview(urlPreviewView) - - let leadingOrTrailingConstraint: NSLayoutConstraint - - - // Incoming message - if cellData.isIncoming { + if let urlPreviewDisplayable = cell as? RoomCellURLPreviewDisplayable { + urlPreviewView.translatesAutoresizingMaskIntoConstraints = false + urlPreviewDisplayable.addURLPreviewView(urlPreviewView) + } else { + cell.addTemporarySubview(urlPreviewView) + + let cellContentView = cell.contentView + + urlPreviewView.translatesAutoresizingMaskIntoConstraints = false + urlPreviewView.availableWidth = cellData.maxTextViewWidth + cellContentView.addSubview(urlPreviewView) + + let leadingOrTrailingConstraint: NSLayoutConstraint + + + // Incoming message + if cellData.isIncoming { - var leftMargin = RoomBubbleCellLayout.reactionsViewLeftMargin - if cellData.containsBubbleComponentWithEncryptionBadge { - leftMargin += RoomBubbleCellLayout.encryptedContentLeftMargin + var leftMargin = RoomBubbleCellLayout.reactionsViewLeftMargin + if cellData.containsBubbleComponentWithEncryptionBadge { + leftMargin += RoomBubbleCellLayout.encryptedContentLeftMargin + } + + leftMargin-=5.0 + + leadingOrTrailingConstraint = urlPreviewView.leadingAnchor.constraint(equalTo: cellContentView.leadingAnchor, constant: leftMargin) + } else { + // Outgoing message + + // TODO: Use constants + let rightMargin: CGFloat = 34.0 + + leadingOrTrailingConstraint = urlPreviewView.trailingAnchor.constraint(equalTo: cellContentView.trailingAnchor, constant: -rightMargin) } - leftMargin-=5.0 + let topMargin = contentViewPositionY + RoomBubbleCellLayout.urlPreviewViewTopMargin + RoomBubbleCellLayout.reactionsViewTopMargin - leadingOrTrailingConstraint = urlPreviewView.leadingAnchor.constraint(equalTo: cellContentView.leadingAnchor, constant: leftMargin) - } else { - // Outgoing message - - // TODO: Use constants - let rightMargin: CGFloat = 34.0 - - leadingOrTrailingConstraint = urlPreviewView.trailingAnchor.constraint(equalTo: cellContentView.trailingAnchor, constant: -rightMargin) + // Set the preview view's origin + NSLayoutConstraint.activate([ + leadingOrTrailingConstraint, + urlPreviewView.topAnchor.constraint(equalTo: cellContentView.topAnchor, constant: topMargin) + ]) } - - let topMargin = contentViewPositionY + RoomBubbleCellLayout.urlPreviewViewTopMargin + RoomBubbleCellLayout.reactionsViewTopMargin - - // Set the preview view's origin - NSLayoutConstraint.activate([ - leadingOrTrailingConstraint, - urlPreviewView.topAnchor.constraint(equalTo: cellContentView.topAnchor, constant: topMargin) - ]) } override func addThreadSummaryView(_ threadSummaryView: ThreadSummaryView,