session-ios/Session/Media Viewing & Editing/MediaInfoVC.swift

77 lines
2.5 KiB
Swift

// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
import UIKit
import SessionUIKit
import SessionUtilitiesKit
final class MediaInfoVC: BaseVC {
internal static let mediaSize: CGFloat = 293
private let attachments: [Attachment]
private let isOutgoing: Bool
// MARK: - UI
private lazy var mediaInfoView: MediaInfoView = MediaInfoView(attachment: nil)
// MARK: - Initialization
init(attachments: [Attachment], isOutgoing: Bool) {
self.isOutgoing = isOutgoing
self.attachments = attachments
super.init(nibName: nil, bundle: nil)
}
override init(nibName: String?, bundle: Bundle?) {
preconditionFailure("Use init(attachments:) instead.")
}
required init?(coder: NSCoder) {
preconditionFailure("Use init(attachments:) instead.")
}
// MARK: - Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
ViewControllerUtilities.setUpDefaultSessionStyle(
for: self,
title: "Message Info",
hasCustomBackButton: false
)
let mediaStackView: UIStackView = UIStackView()
mediaStackView.axis = .horizontal
attachments.forEach {
let mediaPreviewView: MediaPreviewView = MediaPreviewView(
attachment: $0,
isOutgoing: isOutgoing)
mediaStackView.addArrangedSubview(mediaPreviewView)
}
let contentWidth: CGFloat = Self.mediaSize * CGFloat(attachments.count)
let contentHeight: CGFloat = Self.mediaSize
mediaStackView.set(.width, to: contentWidth)
mediaStackView.set(.height, to: contentHeight)
let scrollView: UIScrollView = UIScrollView()
scrollView.isPagingEnabled = true
scrollView.showsVerticalScrollIndicator = false
scrollView.showsHorizontalScrollIndicator = false
scrollView.set(.width, to: Self.mediaSize)
scrollView.set(.height, to: Self.mediaSize)
scrollView.contentSize = CGSize(width: contentWidth, height: contentHeight)
scrollView.addSubview(mediaStackView)
mediaInfoView.update(attachment: attachments[0])
let stackView: UIStackView = UIStackView(arrangedSubviews: [ scrollView, mediaInfoView ])
stackView.axis = .vertical
stackView.spacing = Values.largeSpacing
self.view.addSubview(stackView)
stackView.center(in: self.view)
}
}