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

  1. //
  2. // InviteView.swift
  3. // GME Remit
  4. //
  5. // Created by Armaan Shrestha on 21/08/2022.
  6. // Copyright © 2022 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class InviteView: UIView {
  10. lazy var containerView: UIView = {
  11. let view = UIView()
  12. view.backgroundColor = .themeSubBackground
  13. view.isUserInteractionEnabled = true
  14. view.translatesAutoresizingMaskIntoConstraints = false
  15. return view
  16. }()
  17. lazy var referStackView: UIStackView = {
  18. let stackView = UIStackView()
  19. stackView.axis = .vertical
  20. stackView.spacing = 10
  21. stackView.translatesAutoresizingMaskIntoConstraints = false
  22. return stackView
  23. }()
  24. lazy var referNowTitleLabel: UILabel = {
  25. let label = UILabel()
  26. label.text = "refer_now_text".localized()
  27. label.font = .sanfrancisco(.bold, size: 16)
  28. label.textColor = .themeBlack
  29. label.translatesAutoresizingMaskIntoConstraints = false
  30. return label
  31. }()
  32. lazy var referNowHeadingLabel: UILabel = {
  33. let label = UILabel()
  34. label.text = "INVITE_MESSAGE_TITLE".localized()
  35. label.font = .sanfrancisco(.bold, size: 16)
  36. label.textColor = .themeBlack
  37. label.numberOfLines = 0
  38. label.translatesAutoresizingMaskIntoConstraints = false
  39. return label
  40. }()
  41. lazy var referNowLabel: UILabel = {
  42. let label = UILabel()
  43. label.text = "INVITE_MESSAGE_BODY".localized()
  44. label.font = .sanfrancisco(.regular, size: 14)
  45. label.textColor = .themeGray3
  46. label.numberOfLines = 0
  47. label.translatesAutoresizingMaskIntoConstraints = false
  48. return label
  49. }()
  50. lazy var referCodeTitleLabel: UILabel = {
  51. let label = UILabel()
  52. label.text = "your_referral_code_text".localized()
  53. label.font = .sanfrancisco(.bold, size: 16)
  54. label.textColor = .themeBlack
  55. label.translatesAutoresizingMaskIntoConstraints = false
  56. return label
  57. }()
  58. lazy var referCodeView: UIView = {
  59. let view = UIView()
  60. view.backgroundColor = .clear
  61. view.isUserInteractionEnabled = true
  62. view.translatesAutoresizingMaskIntoConstraints = false
  63. return view
  64. }()
  65. lazy var referView: UIView = {
  66. let view = UIView()
  67. view.backgroundColor = .themeGray2
  68. view.isUserInteractionEnabled = true
  69. view.set(cornerRadius: 5)
  70. view.translatesAutoresizingMaskIntoConstraints = false
  71. return view
  72. }()
  73. lazy var referCodeLabel: UILabel = {
  74. let label = UILabel()
  75. label.text = "AAAA"
  76. label.font = .sanfrancisco(.regular, size: 14)
  77. label.textColor = .themeGray3
  78. label.translatesAutoresizingMaskIntoConstraints = false
  79. return label
  80. }()
  81. lazy var copyButton: UIButton = {
  82. let button = UIButton()
  83. button.setTitle("Copy", for: .normal)
  84. button.setTitleColor(.themeBlack, for: .normal)
  85. button.titleLabel?.font = .sanfrancisco(.regular, size: 14)
  86. button.translatesAutoresizingMaskIntoConstraints = false
  87. return button
  88. }()
  89. lazy var shareButton: UIButton = {
  90. let button = UIButton()
  91. button.setTitle("share_link_text".localized(), for: .normal)
  92. button.backgroundColor = .themeRed
  93. button.setTitleColor(.themeWhite, for: .normal)
  94. button.titleLabel?.font = .sanfrancisco(.regular, size: 14)
  95. button.translatesAutoresizingMaskIntoConstraints = false
  96. button.isHidden = true
  97. button.set(cornerRadius: 12)
  98. return button
  99. }()
  100. var data: ReferralModel? {
  101. didSet {
  102. renderData()
  103. }
  104. }
  105. var copyReferalCodeAction: (() -> Void)?
  106. var shareReferalCodeAction: (() -> Void)?
  107. override init(frame: CGRect) {
  108. super.init(frame: frame)
  109. setup()
  110. }
  111. required init?(coder: NSCoder) {
  112. super.init(coder: coder)
  113. setup()
  114. fatalError("init(coder:) has not been implemented")
  115. }
  116. func setup() {
  117. setupView()
  118. }
  119. func setupView() {
  120. self.backgroundColor = .black
  121. self.addSubview(containerView)
  122. containerView.addSubview(referStackView)
  123. containerView.addSubview(shareButton)
  124. referStackView.addArrangedSubview(referNowTitleLabel)
  125. referStackView.addArrangedSubview(referNowHeadingLabel)
  126. referStackView.addArrangedSubview(referNowLabel)
  127. referStackView.addArrangedSubview(referCodeTitleLabel)
  128. referStackView.addArrangedSubview(referCodeView)
  129. referCodeView.addSubview(referView)
  130. referView.addSubview(referCodeLabel)
  131. referView.addSubview(copyButton)
  132. setupLayoutConstraints()
  133. setupClickListiner()
  134. }
  135. func setupLayoutConstraints() {
  136. NSLayoutConstraint.activate([
  137. containerView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor),
  138. containerView.leadingAnchor.constraint(equalTo: leadingAnchor),
  139. containerView.trailingAnchor.constraint(equalTo: trailingAnchor),
  140. containerView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor)
  141. ])
  142. NSLayoutConstraint.activate([
  143. referStackView.topAnchor.constraint(equalTo: containerView.topAnchor, constant: 20),
  144. referStackView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20),
  145. referStackView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20)
  146. ])
  147. NSLayoutConstraint.activate([
  148. referView.topAnchor.constraint(equalTo: referCodeView.topAnchor),
  149. referView.leadingAnchor.constraint(equalTo: referCodeView.leadingAnchor),
  150. referView.bottomAnchor.constraint(equalTo: referCodeView.bottomAnchor),
  151. referView.heightAnchor.constraint(equalToConstant: 40),
  152. referView.widthAnchor.constraint(equalToConstant: 150)
  153. ])
  154. NSLayoutConstraint.activate([
  155. referCodeLabel.leadingAnchor.constraint(equalTo: referView.leadingAnchor, constant: 10),
  156. referCodeLabel.topAnchor.constraint(equalTo: referView.topAnchor),
  157. referCodeLabel.bottomAnchor.constraint(equalTo: referView.bottomAnchor)
  158. ])
  159. NSLayoutConstraint.activate([
  160. copyButton.trailingAnchor.constraint(equalTo: referView.trailingAnchor, constant: -10),
  161. copyButton.leadingAnchor.constraint(equalTo: referCodeLabel.trailingAnchor, constant: 10),
  162. copyButton.topAnchor.constraint(equalTo: referView.topAnchor),
  163. copyButton.bottomAnchor.constraint(equalTo: referView.bottomAnchor)
  164. ])
  165. NSLayoutConstraint.activate([
  166. shareButton.topAnchor.constraint(equalTo: referStackView.bottomAnchor, constant: 30),
  167. shareButton.centerXAnchor.constraint(equalTo: containerView.centerXAnchor),
  168. shareButton.heightAnchor.constraint(equalToConstant: 50),
  169. shareButton.widthAnchor.constraint(equalToConstant: 130)
  170. ])
  171. }
  172. func renderData() {
  173. referNowLabel.text = data!.inviteMessageBody
  174. referNowHeadingLabel.text = data!.inviteMessage
  175. referCodeLabel.text = data!.inviteCode
  176. }
  177. func setupClickListiner() {
  178. copyButton.addTarget(self, action: #selector(copyBtnClicked), for: .touchUpInside)
  179. shareButton.addTarget(self, action: #selector(shareBtnClicked), for: .touchUpInside)
  180. }
  181. @objc func copyBtnClicked() {
  182. self.copyReferalCodeAction?()
  183. }
  184. @objc func shareBtnClicked() {
  185. self.shareReferalCodeAction?()
  186. }
  187. }