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