// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit import SessionUIKit class SessionFooterView: UITableViewHeaderFooterView { private lazy var emptyHeightConstraint: NSLayoutConstraint = self.heightAnchor .constraint(equalToConstant: (Values.verySmallSpacing * 2)) private lazy var filledHeightConstraint: NSLayoutConstraint = self.heightAnchor .constraint(greaterThanOrEqualToConstant: Values.mediumSpacing) // MARK: - UI private let stackView: UIStackView = { let result: UIStackView = UIStackView() result.translatesAutoresizingMaskIntoConstraints = false result.axis = .vertical result.distribution = .fill result.alignment = .fill result.isLayoutMarginsRelativeArrangement = true return result }() private let titleLabel: UILabel = { let result: UILabel = UILabel() result.translatesAutoresizingMaskIntoConstraints = false result.font = .systemFont(ofSize: Values.verySmallFontSize) result.textAlignment = .center result.numberOfLines = 0 result.themeTextColor = .textSecondary return result }() // MARK: - Initialization override init(reuseIdentifier: String?) { super.init(reuseIdentifier: reuseIdentifier) self.backgroundView = UIView() self.backgroundView?.themeBackgroundColor = .backgroundPrimary addSubview(stackView) stackView.addArrangedSubview(titleLabel) setupLayout() } required init?(coder: NSCoder) { fatalError("use init(reuseIdentifier:) instead") } private func setupLayout() { stackView.pin(to: self) } // MARK: - Content public func update( style: SessionCell.BackgroundStyle = .rounded, title: String? ) { let titleIsEmpty: Bool = (title ?? "").isEmpty let edgePadding: CGFloat = { switch style { case .rounded: // Align to the start of the text in the cell return (Values.largeSpacing + Values.mediumSpacing) case .edgeToEdge, .noBackground: return Values.largeSpacing } }() titleLabel.text = title titleLabel.isHidden = titleIsEmpty stackView.layoutMargins = UIEdgeInsets( top: (titleIsEmpty ? Values.verySmallSpacing : Values.mediumSpacing), left: edgePadding, bottom: (titleIsEmpty ? Values.verySmallSpacing : Values.mediumSpacing), right: edgePadding ) emptyHeightConstraint.isActive = titleIsEmpty filledHeightConstraint.isActive = !titleIsEmpty self.layoutIfNeeded() } }