// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit import SessionUIKit final class CallMissedTipsModal: Modal { private let caller: String // MARK: - UI private lazy var tipsIconContainerView: UIView = UIView() private lazy var tipsIconImageView: UIImageView = { let result: UIImageView = UIImageView( image: UIImage(named: "Tips")?.withRenderingMode(.alwaysTemplate) ) result.themeTintColor = .textPrimary result.set(.width, to: 19) result.set(.height, to: 28) return result }() private lazy var titleLabel: UILabel = { let result: UILabel = UILabel() result.font = .boldSystemFont(ofSize: Values.mediumFontSize) result.text = "modal_call_missed_tips_title".localized() result.themeTextColor = .textPrimary result.textAlignment = .center return result }() private lazy var messageLabel: UILabel = { let result: UILabel = UILabel() result.font = .systemFont(ofSize: Values.smallFontSize) result.text = String(format: "modal_call_missed_tips_explanation".localized(), caller) result.themeTextColor = .textPrimary result.textAlignment = .natural result.lineBreakMode = .byWordWrapping result.numberOfLines = 0 return result }() private lazy var contentStackView: UIStackView = { let result = UIStackView(arrangedSubviews: [ tipsIconContainerView, titleLabel, messageLabel ]) result.axis = .vertical result.spacing = Values.smallSpacing result.isLayoutMarginsRelativeArrangement = true result.layoutMargins = UIEdgeInsets( top: Values.largeSpacing, leading: Values.largeSpacing, bottom: Values.verySmallSpacing, trailing: Values.largeSpacing ) return result }() private lazy var mainStackView: UIStackView = { let result = UIStackView(arrangedSubviews: [ contentStackView, cancelButton ]) result.axis = .vertical result.spacing = Values.largeSpacing - Values.smallFontSize / 2 return result }() // MARK: - Lifecycle init(caller: String) { self.caller = caller super.init() self.modalPresentationStyle = .overFullScreen self.modalTransitionStyle = .crossDissolve } required init?(coder: NSCoder) { preconditionFailure("Use init(caller:) instead.") } override func populateContentView() { cancelButton.setTitle("BUTTON_OK".localized(), for: .normal) contentView.addSubview(mainStackView) tipsIconContainerView.addSubview(tipsIconImageView) mainStackView.pin(to: contentView) tipsIconImageView.pin(.top, to: .top, of: tipsIconContainerView) tipsIconImageView.pin(.bottom, to: .bottom, of: tipsIconContainerView) tipsIconImageView.center(in: tipsIconContainerView) } }