You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

217 lines
7.6 KiB

//
// 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?()
}
}