// // InviteView.swift // GME Remit // // Created by Armaan Shrestha on 21/08/2022. // Copyright © 2022 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit class InviteView: UIView { lazy var containerView: UIView = { let view = UIView() view.backgroundColor = .themeSubBackground view.isUserInteractionEnabled = true view.translatesAutoresizingMaskIntoConstraints = false return view }() lazy var referStackView: UIStackView = { let stackView = UIStackView() stackView.axis = .vertical stackView.spacing = 10 stackView.translatesAutoresizingMaskIntoConstraints = false return stackView }() lazy var referNowTitleLabel: UILabel = { let label = UILabel() label.text = "refer_now_text".localized() label.font = .sanfrancisco(.bold, size: 16) label.textColor = .themeBlack label.translatesAutoresizingMaskIntoConstraints = false return label }() lazy var referNowHeadingLabel: UILabel = { let label = UILabel() label.text = "INVITE_MESSAGE_TITLE".localized() label.font = .sanfrancisco(.bold, size: 16) label.textColor = .themeBlack label.numberOfLines = 0 label.translatesAutoresizingMaskIntoConstraints = false return label }() lazy var referNowLabel: UILabel = { let label = UILabel() label.text = "INVITE_MESSAGE_BODY".localized() label.font = .sanfrancisco(.regular, size: 14) label.textColor = .themeGray3 label.numberOfLines = 0 label.translatesAutoresizingMaskIntoConstraints = false return label }() lazy var referCodeTitleLabel: UILabel = { let label = UILabel() label.text = "your_referral_code_text".localized() label.font = .sanfrancisco(.bold, size: 16) label.textColor = .themeBlack label.translatesAutoresizingMaskIntoConstraints = false return label }() lazy var referCodeView: UIView = { let view = UIView() view.backgroundColor = .clear view.isUserInteractionEnabled = true view.translatesAutoresizingMaskIntoConstraints = false return view }() lazy var referView: UIView = { let view = UIView() view.backgroundColor = .themeGray2 view.isUserInteractionEnabled = true view.set(cornerRadius: 5) view.translatesAutoresizingMaskIntoConstraints = false return view }() lazy var referCodeLabel: UILabel = { let label = UILabel() label.text = "AAAA" label.font = .sanfrancisco(.regular, size: 14) label.textColor = .themeGray3 label.translatesAutoresizingMaskIntoConstraints = false return label }() lazy var copyButton: UIButton = { let button = UIButton() button.setTitle("Copy", for: .normal) button.setTitleColor(.themeBlack, for: .normal) button.titleLabel?.font = .sanfrancisco(.regular, size: 14) button.translatesAutoresizingMaskIntoConstraints = false return button }() lazy var shareButton: UIButton = { let button = UIButton() button.setTitle("share_link_text".localized(), for: .normal) button.backgroundColor = .themeRed button.setTitleColor(.themeWhite, for: .normal) button.titleLabel?.font = .sanfrancisco(.regular, size: 14) button.translatesAutoresizingMaskIntoConstraints = false button.isHidden = true button.set(cornerRadius: 12) return button }() var data: ReferralModel? { didSet { renderData() } } var copyReferalCodeAction: (() -> Void)? var shareReferalCodeAction: (() -> Void)? override init(frame: CGRect) { super.init(frame: frame) setup() } required init?(coder: NSCoder) { super.init(coder: coder) setup() fatalError("init(coder:) has not been implemented") } func setup() { setupView() } func setupView() { self.backgroundColor = .black self.addSubview(containerView) containerView.addSubview(referStackView) containerView.addSubview(shareButton) referStackView.addArrangedSubview(referNowTitleLabel) referStackView.addArrangedSubview(referNowHeadingLabel) referStackView.addArrangedSubview(referNowLabel) referStackView.addArrangedSubview(referCodeTitleLabel) referStackView.addArrangedSubview(referCodeView) referCodeView.addSubview(referView) referView.addSubview(referCodeLabel) referView.addSubview(copyButton) setupLayoutConstraints() setupClickListiner() } func setupLayoutConstraints() { NSLayoutConstraint.activate([ containerView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor), containerView.leadingAnchor.constraint(equalTo: leadingAnchor), containerView.trailingAnchor.constraint(equalTo: trailingAnchor), containerView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor) ]) NSLayoutConstraint.activate([ referStackView.topAnchor.constraint(equalTo: containerView.topAnchor, constant: 20), referStackView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20), referStackView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20) ]) NSLayoutConstraint.activate([ referView.topAnchor.constraint(equalTo: referCodeView.topAnchor), referView.leadingAnchor.constraint(equalTo: referCodeView.leadingAnchor), referView.bottomAnchor.constraint(equalTo: referCodeView.bottomAnchor), referView.heightAnchor.constraint(equalToConstant: 40), referView.widthAnchor.constraint(equalToConstant: 150) ]) NSLayoutConstraint.activate([ referCodeLabel.leadingAnchor.constraint(equalTo: referView.leadingAnchor, constant: 10), referCodeLabel.topAnchor.constraint(equalTo: referView.topAnchor), referCodeLabel.bottomAnchor.constraint(equalTo: referView.bottomAnchor) ]) NSLayoutConstraint.activate([ copyButton.trailingAnchor.constraint(equalTo: referView.trailingAnchor, constant: -10), copyButton.leadingAnchor.constraint(equalTo: referCodeLabel.trailingAnchor, constant: 10), copyButton.topAnchor.constraint(equalTo: referView.topAnchor), copyButton.bottomAnchor.constraint(equalTo: referView.bottomAnchor) ]) NSLayoutConstraint.activate([ shareButton.topAnchor.constraint(equalTo: referStackView.bottomAnchor, constant: 30), shareButton.centerXAnchor.constraint(equalTo: containerView.centerXAnchor), shareButton.heightAnchor.constraint(equalToConstant: 50), shareButton.widthAnchor.constraint(equalToConstant: 130) ]) } func renderData() { referNowLabel.text = data!.inviteMessageBody referNowHeadingLabel.text = data!.inviteMessage referCodeLabel.text = data!.inviteCode } func setupClickListiner() { copyButton.addTarget(self, action: #selector(copyBtnClicked), for: .touchUpInside) shareButton.addTarget(self, action: #selector(shareBtnClicked), for: .touchUpInside) } @objc func copyBtnClicked() { self.copyReferalCodeAction?() } @objc func shareBtnClicked() { self.shareReferalCodeAction?() } }