@jimrising/easymerchantsdk-react-native 2.2.1 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +1 -1
  2. package/ios/Pods/UserDefaults/UserStoreSingleton.swift +304 -0
  3. package/ios/Pods/ViewControllers/AdditionalInfoVC.swift +2636 -0
  4. package/ios/Pods/ViewControllers/BaseVC.swift +141 -0
  5. package/ios/Pods/ViewControllers/BillingInfoVC/BillingInfoVC.swift +3347 -0
  6. package/ios/Pods/ViewControllers/BillingInfoVC/Cells/CityListTVC.swift +46 -0
  7. package/ios/Pods/ViewControllers/BillingInfoVC/Cells/CountryListTVC.swift +47 -0
  8. package/ios/Pods/ViewControllers/BillingInfoVC/Cells/StateListTVC.swift +46 -0
  9. package/ios/Pods/ViewControllers/CountryListVC.swift +435 -0
  10. package/ios/Pods/ViewControllers/CustomOverlay.swift +199 -0
  11. package/ios/Pods/ViewControllers/EmailVerificationVC.swift +307 -0
  12. package/ios/Pods/ViewControllers/GrailPayVC.swift +244 -0
  13. package/ios/Pods/ViewControllers/OTPVerificationVC.swift +2066 -0
  14. package/ios/Pods/ViewControllers/PaymentDoneVC.swift +272 -0
  15. package/ios/Pods/ViewControllers/PaymentErrorVC.swift +85 -0
  16. package/ios/Pods/ViewControllers/PaymentInformation/AccountTypeTVC.swift +41 -0
  17. package/ios/Pods/ViewControllers/PaymentInformation/PaymentInfoVC.swift +11025 -0
  18. package/ios/Pods/ViewControllers/PaymentInformation/PaymentInformationCVC.swift +35 -0
  19. package/ios/Pods/ViewControllers/PaymentInformation/RecurringTVC.swift +40 -0
  20. package/ios/Pods/ViewControllers/PaymentInformation/SavedAccountsTVC/SavedAccountTVC.swift +81 -0
  21. package/ios/Pods/ViewControllers/PaymentInformation/SavedAccountsTVC/SavedAccountTVC.xib +163 -0
  22. package/ios/Pods/ViewControllers/PaymentInformation/SavedCardsTVC/SavedCardsTVC.swift +81 -0
  23. package/ios/Pods/ViewControllers/PaymentInformation/SavedCardsTVC/SavedCardsTVC.xib +188 -0
  24. package/ios/Pods/ViewControllers/PaymentStatusWebViewVC.swift +167 -0
  25. package/ios/Pods/ViewControllers/TermAndConditionsVC.swift +63 -0
  26. package/ios/Pods/ViewControllers/ThreeDSecurePaymentDoneVC.swift +629 -0
  27. package/ios/easymerchantsdk.podspec +1 -1
  28. package/package.json +1 -1
@@ -0,0 +1,141 @@
1
+ //
2
+ // BaseVC.swift
3
+ // EasyPay
4
+ //
5
+ // Created by Mony's Mac on 12/08/24.
6
+ //
7
+
8
+ import UIKit
9
+
10
+ class BaseVC: UIViewController {
11
+
12
+ private let activityIndicator: UIActivityIndicatorView? = nil
13
+ private var overlayView: UIView?
14
+
15
+ override func viewDidLoad() {
16
+ super.viewDidLoad()
17
+ }
18
+
19
+ func addOverlayView() {
20
+ guard let keyWindowScene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene,
21
+ let keyWindow = keyWindowScene.windows.first(where: { $0.isKeyWindow }) else {
22
+ return
23
+ }
24
+ DispatchQueue.main.async {
25
+ let overlayView = UIView(frame: keyWindow.bounds)
26
+ overlayView.backgroundColor = UIColor.black.withAlphaComponent(0.3)
27
+ keyWindow.addSubview(overlayView)
28
+ self.overlayView = overlayView
29
+ }
30
+ }
31
+
32
+ func removeOverlayView() {
33
+ DispatchQueue.main.async {
34
+ self.overlayView?.removeFromSuperview()
35
+ self.overlayView = nil
36
+ }
37
+ }
38
+
39
+ func showLoadingIndicator() {
40
+ DispatchQueue.main.async {
41
+ let activityIndicator = UIActivityIndicatorView(style: .large)
42
+ activityIndicator.center = self.view.center
43
+ activityIndicator.hidesWhenStopped = true
44
+ activityIndicator.startAnimating()
45
+ self.addOverlayView()
46
+ self.view.addSubview(activityIndicator)
47
+ }
48
+ }
49
+
50
+ func hideLoadingIndicator() {
51
+ DispatchQueue.main.async {
52
+ // Find and remove the activity indicator from its superview
53
+ for subview in self.view.subviews {
54
+ if let activityIndicator = subview as? UIActivityIndicatorView {
55
+ activityIndicator.stopAnimating()
56
+ self.removeOverlayView()
57
+ activityIndicator.removeFromSuperview()
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ // MARK: - Toast Method
64
+ func showToast(message: String, duration: Double = 3.0) {
65
+ DispatchQueue.main.async { [weak self] in
66
+ guard let self = self else { return }
67
+
68
+ let toastLabel = UILabel()
69
+ toastLabel.text = message
70
+ toastLabel.textColor = .black
71
+ toastLabel.backgroundColor = .systemGray5
72
+ toastLabel.textAlignment = .center
73
+ toastLabel.font = UIFont.systemFont(ofSize: 15)
74
+ toastLabel.numberOfLines = 0
75
+ toastLabel.alpha = 0.0
76
+ toastLabel.layer.cornerRadius = 10
77
+ toastLabel.clipsToBounds = true
78
+
79
+ let horizontalPadding: CGFloat = 22
80
+ let verticalPadding: CGFloat = 16
81
+ let maxWidth = self.view.frame.width - 2 * horizontalPadding
82
+
83
+ // Calculate size based on message content
84
+ let constraintSize = CGSize(width: maxWidth - 20, height: .greatestFiniteMagnitude)
85
+ let boundingBox = NSString(string: message).boundingRect(
86
+ with: constraintSize,
87
+ options: .usesLineFragmentOrigin,
88
+ attributes: [.font: toastLabel.font!],
89
+ context: nil
90
+ )
91
+
92
+ let calculatedHeight = boundingBox.height + verticalPadding
93
+
94
+ // Position it 60pt from bottom (was 100)
95
+ toastLabel.frame = CGRect(
96
+ x: horizontalPadding,
97
+ y: self.view.frame.height - calculatedHeight - 60,
98
+ width: maxWidth,
99
+ height: calculatedHeight
100
+ )
101
+
102
+ self.view.addSubview(toastLabel)
103
+
104
+ UIView.animate(withDuration: 0.5, animations: {
105
+ toastLabel.alpha = 1.0
106
+ }) { _ in
107
+ UIView.animate(withDuration: 0.5, delay: duration, options: .curveEaseOut, animations: {
108
+ toastLabel.alpha = 0.0
109
+ }) { _ in
110
+ toastLabel.removeFromSuperview()
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+
117
+ func showAlert(title: String = "Alert", message: String, actionTitle: String = "OK", handler: ((UIAlertAction) -> Void)? = nil) {
118
+ DispatchQueue.main.async {
119
+ let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
120
+ let action = UIAlertAction(title: actionTitle, style: .default, handler: handler)
121
+ alert.addAction(action)
122
+ self.present(alert, animated: true, completion: nil)
123
+ }
124
+ }
125
+
126
+ // Helper function to validate email format using regex
127
+ func isValidEmail(_ email: String) -> Bool {
128
+ let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
129
+ let emailPred = NSPredicate(format: "SELF MATCHES %@", emailRegEx)
130
+ return emailPred.evaluate(with: email)
131
+ }
132
+ }
133
+
134
+ extension String {
135
+ func matches(_ pattern: String) -> Bool {
136
+ return NSPredicate(format: "SELF MATCHES %@", pattern).evaluate(with: self)
137
+ }
138
+ }
139
+
140
+
141
+