@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.
- package/README.md +1 -1
- package/ios/Pods/UserDefaults/UserStoreSingleton.swift +304 -0
- package/ios/Pods/ViewControllers/AdditionalInfoVC.swift +2636 -0
- package/ios/Pods/ViewControllers/BaseVC.swift +141 -0
- package/ios/Pods/ViewControllers/BillingInfoVC/BillingInfoVC.swift +3347 -0
- package/ios/Pods/ViewControllers/BillingInfoVC/Cells/CityListTVC.swift +46 -0
- package/ios/Pods/ViewControllers/BillingInfoVC/Cells/CountryListTVC.swift +47 -0
- package/ios/Pods/ViewControllers/BillingInfoVC/Cells/StateListTVC.swift +46 -0
- package/ios/Pods/ViewControllers/CountryListVC.swift +435 -0
- package/ios/Pods/ViewControllers/CustomOverlay.swift +199 -0
- package/ios/Pods/ViewControllers/EmailVerificationVC.swift +307 -0
- package/ios/Pods/ViewControllers/GrailPayVC.swift +244 -0
- package/ios/Pods/ViewControllers/OTPVerificationVC.swift +2066 -0
- package/ios/Pods/ViewControllers/PaymentDoneVC.swift +272 -0
- package/ios/Pods/ViewControllers/PaymentErrorVC.swift +85 -0
- package/ios/Pods/ViewControllers/PaymentInformation/AccountTypeTVC.swift +41 -0
- package/ios/Pods/ViewControllers/PaymentInformation/PaymentInfoVC.swift +11025 -0
- package/ios/Pods/ViewControllers/PaymentInformation/PaymentInformationCVC.swift +35 -0
- package/ios/Pods/ViewControllers/PaymentInformation/RecurringTVC.swift +40 -0
- package/ios/Pods/ViewControllers/PaymentInformation/SavedAccountsTVC/SavedAccountTVC.swift +81 -0
- package/ios/Pods/ViewControllers/PaymentInformation/SavedAccountsTVC/SavedAccountTVC.xib +163 -0
- package/ios/Pods/ViewControllers/PaymentInformation/SavedCardsTVC/SavedCardsTVC.swift +81 -0
- package/ios/Pods/ViewControllers/PaymentInformation/SavedCardsTVC/SavedCardsTVC.xib +188 -0
- package/ios/Pods/ViewControllers/PaymentStatusWebViewVC.swift +167 -0
- package/ios/Pods/ViewControllers/TermAndConditionsVC.swift +63 -0
- package/ios/Pods/ViewControllers/ThreeDSecurePaymentDoneVC.swift +629 -0
- package/ios/easymerchantsdk.podspec +1 -1
- 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
|
+
|