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.

132 lines
4.3 KiB

2 years ago
2 years ago
  1. //
  2. // InviteUserViewController.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 InviteUserViewController: UIViewController {
  10. let inviteView = InviteView()
  11. let referralView = ReferralView()
  12. // MARK: Properties
  13. var presenter: InviteUserModuleInterface?
  14. // MARK: IBOutlets
  15. @IBOutlet weak var backgroundView: UIView!
  16. @IBOutlet weak var viewPagerContainer: UIView!
  17. @IBOutlet weak var rewardPointTitleLabel: UILabel!
  18. @IBOutlet weak var rewardPointLabel: UILabel!
  19. lazy var viewPager: ViewPager = {
  20. // 1
  21. let viewPager = ViewPager(
  22. tabSizeConfiguration: .fillEqually(height: 40, spacing: 0)
  23. )
  24. // 3
  25. viewPager.tabbedView.tabs = [
  26. AppTabItemView(title: "title_invite_txt".localized(), icon: ""),
  27. AppTabItemView(title: "title_referral_text".localized(), icon: "")
  28. ]
  29. viewPager.pagedView.pages = [
  30. inviteView,
  31. referralView
  32. ]
  33. viewPager.translatesAutoresizingMaskIntoConstraints = false
  34. return viewPager
  35. }()
  36. // MARK: VC's Life cycle
  37. override func viewDidLoad() {
  38. super.viewDidLoad()
  39. self.setup()
  40. self.title = "Reward Points"
  41. }
  42. // MARK: IBActions
  43. // MARK: Other Functions
  44. private func setup() {
  45. // all setup should be done here
  46. inviteView.copyReferalCodeAction = {
  47. self.copyReferalCode()
  48. }
  49. inviteView.shareReferalCodeAction = {
  50. self.shareCode()
  51. }
  52. setupView()
  53. presenter?.fetchData()
  54. }
  55. func setupView() {
  56. backgroundView.backgroundColor = .themeMixedRed
  57. backgroundView.set(cornerRadius: 12)
  58. viewPagerContainer.set(cornerRadius: 12)
  59. viewPagerContainer.layer.addShadow(with: UIColor.themeText)
  60. viewPager.set(cornerRadius: 12)
  61. rewardPointTitleLabel.text = "rewards_points_available_text".localized()
  62. self.view.addSubview(viewPager)
  63. NSLayoutConstraint.activate([
  64. viewPager.topAnchor.constraint(equalTo: self.viewPagerContainer.topAnchor),
  65. viewPager.leadingAnchor.constraint(equalTo: self.viewPagerContainer.leadingAnchor),
  66. viewPager.trailingAnchor.constraint(equalTo: self.viewPagerContainer.trailingAnchor),
  67. viewPager.bottomAnchor.constraint(equalTo: self.viewPagerContainer.bottomAnchor)
  68. ])
  69. }
  70. func copyReferalCode() {
  71. let referralCode = GMEDB.shared.user.string(.referralCode)
  72. UIPasteboard.general.string = referralCode
  73. self.showToast(message: "Code copied to Clipboard", font: .systemFont(ofSize: 12.0))
  74. }
  75. func shareCode() {
  76. let referralCode = GMEDB.shared.user.string(.referralCode)
  77. // let myWebsite = NSURL(string:"https://jmeremit.page.link/?invite=\(referralCode)")
  78. ////// let shareAll = [text , image! , myWebsite]
  79. // let activityViewController = UIActivityViewController(activityItems: [myWebsite], applicationActivities: nil)
  80. // activityViewController.popoverPresentationController?.sourceView = self.view
  81. // self.present(activityViewController, animated: true, completion: nil)
  82. if let name = URL(string: "https://jmeremit.page.link/?invite=\(referralCode!)"), !name.absoluteString.isEmpty {
  83. let objectsToShare = [name]
  84. let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
  85. self.present(activityVC, animated: true, completion: nil)
  86. } else {
  87. // show alert for not available
  88. }
  89. }
  90. }
  91. // MARK: InviteUserViewInterface
  92. extension InviteUserViewController: InviteUserViewInterface {
  93. func progress(isShow: Bool) {
  94. if isShow {
  95. self.showProgressHud()
  96. } else {
  97. self.hideProgressHud()
  98. }
  99. }
  100. func obtained(data: ReferralModel) {
  101. inviteView.data = data
  102. referralView.data = data.details
  103. rewardPointLabel.text = data.rewardMoney
  104. }
  105. func obtained(error: String) {
  106. self.gmeAlert(message: error)
  107. }
  108. }