diff --git a/Session/Conversations/Message Cells/Content Views/DocumentView.swift b/Session/Conversations/Message Cells/Content Views/DocumentView.swift index ff2b2e73d..372befc8c 100644 --- a/Session/Conversations/Message Cells/Content Views/DocumentView.swift +++ b/Session/Conversations/Message Cells/Content Views/DocumentView.swift @@ -4,8 +4,7 @@ final class DocumentView : UIView { private let textColor: UIColor // MARK: Settings - private static let iconSize: CGFloat = 24 - private static let iconImageViewSize: CGFloat = 40 + private static let iconImageViewSize: CGSize = CGSize(width: 26, height: 40) // MARK: Lifecycle init(viewItem: ConversationViewItem, textColor: UIColor) { @@ -26,26 +25,23 @@ final class DocumentView : UIView { private func setUpViewHierarchy() { guard let attachment = viewItem.attachmentStream ?? viewItem.attachmentPointer else { return } // Image view - let iconSize = DocumentView.iconSize - let icon = UIImage(named: "actionsheet_document_black")?.withTint(textColor)?.resizedImage(to: CGSize(width: iconSize, height: iconSize)) + let icon = UIImage(named: "File")?.withTint(textColor) let imageView = UIImageView(image: icon) imageView.contentMode = .center let iconImageViewSize = DocumentView.iconImageViewSize - imageView.set(.width, to: iconImageViewSize) - imageView.set(.height, to: iconImageViewSize) + imageView.set(.width, to: iconImageViewSize.width) + imageView.set(.height, to: iconImageViewSize.height) // Body label let titleLabel = UILabel() titleLabel.lineBreakMode = .byTruncatingTail titleLabel.text = attachment.sourceFilename ?? "File" titleLabel.textColor = textColor - titleLabel.font = .systemFont(ofSize: Values.mediumFontSize) + titleLabel.font = .systemFont(ofSize: Values.mediumFontSize, weight: .light) // Stack view let stackView = UIStackView(arrangedSubviews: [ imageView, titleLabel ]) stackView.axis = .horizontal - stackView.alignment = .center - stackView.isLayoutMarginsRelativeArrangement = true - stackView.layoutMargins = UIEdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 12) + stackView.spacing = Values.verySmallSpacing addSubview(stackView) - stackView.pin(to: self, withInset: Values.smallSpacing) + stackView.pin(to: self) } } diff --git a/Session/Conversations/Message Cells/VisibleMessageCell.swift b/Session/Conversations/Message Cells/VisibleMessageCell.swift index f2e844fd5..f85cce217 100644 --- a/Session/Conversations/Message Cells/VisibleMessageCell.swift +++ b/Session/Conversations/Message Cells/VisibleMessageCell.swift @@ -362,7 +362,6 @@ final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate { let maxMessageWidth = VisibleMessageCell.getMaxWidth(for: viewItem) let albumView = MediaAlbumView(mediaCache: cache, items: viewItem.mediaAlbumItems!, isOutgoing: isOutgoing, maxMessageWidth: maxMessageWidth) self.albumView = albumView - snContentView.addSubview(albumView) let size = getSize(for: viewItem) albumView.set(.width, to: size.width) albumView.set(.height, to: size.height) @@ -398,9 +397,25 @@ final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate { Storage.shared.getContact(with: thread.contactSessionID())?.isTrusted != true { showMediaPlaceholder() } else { + let inset: CGFloat = 12 + let maxWidth = VisibleMessageCell.getMaxWidth(for: viewItem) - 2 * inset + // Stack view + let stackView = UIStackView(arrangedSubviews: []) + stackView.axis = .vertical + stackView.spacing = Values.smallSpacing + // Document view let documentView = DocumentView(viewItem: viewItem, textColor: bodyLabelTextColor) - snContentView.addSubview(documentView) - documentView.pin(to: snContentView) + stackView.addArrangedSubview(documentView) + // Body text view + if let message = viewItem.interaction as? TSMessage, let body = message.body, body.count > 0, + let delegate = delegate { // delegate should always be set at this point + let bodyTextView = VisibleMessageCell.getBodyTextView(for: viewItem, with: maxWidth, textColor: bodyLabelTextColor, searchText: delegate.lastSearchedText, delegate: self) + self.bodyTextView = bodyTextView + stackView.addArrangedSubview(bodyTextView) + } + // Constraints + snContentView.addSubview(stackView) + stackView.pin(to: snContentView, withInset: inset) } case .deletedMessage: let deletedMessageView = DeletedMessageView(viewItem: viewItem, textColor: bodyLabelTextColor) diff --git a/Session/Meta/Images.xcassets/Session/File.imageset/Contents.json b/Session/Meta/Images.xcassets/Session/File.imageset/Contents.json new file mode 100644 index 000000000..df41b260e --- /dev/null +++ b/Session/Meta/Images.xcassets/Session/File.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "doc.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Session/Meta/Images.xcassets/Session/File.imageset/doc.pdf b/Session/Meta/Images.xcassets/Session/File.imageset/doc.pdf new file mode 100644 index 000000000..4338f23a1 Binary files /dev/null and b/Session/Meta/Images.xcassets/Session/File.imageset/doc.pdf differ