@jimrising/easymerchantsdk-react-native 2.2.9 → 2.3.1
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/.idea/caches/deviceStreaming.xml +11 -0
- package/README.md +310 -171
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule$2.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule$3.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule$2.dex +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule$3.dex +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule.dex +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/desugar_graph.bin +0 -0
- package/android/build/.transforms/58b147bdc43284da2468dab19bc4a64d/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/e9a664a11ce12edf79cd87b1e07aa243/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/intermediates/aar_main_jar/release/syncReleaseLibJars/classes.jar +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar +0 -0
- package/android/build/intermediates/full_jar/release/createFullJarRelease/full.jar +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
- package/android/build/intermediates/incremental/lintVitalAnalyzeRelease/release-artifact-dependencies.xml +4 -4
- package/android/build/intermediates/incremental/lintVitalAnalyzeRelease/release-artifact-libraries.xml +4 -4
- package/android/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +916 -916
- package/android/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +3 -3
- package/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties +1 -1
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/lint-cache/lintVitalAnalyzeRelease/maven.google/com/android/tools/build/group-index.xml +22 -0
- package/android/build/intermediates/lint_model/release/generateReleaseLintModel/release-artifact-dependencies.xml +4 -4
- package/android/build/intermediates/lint_model/release/generateReleaseLintModel/release-artifact-libraries.xml +4 -4
- package/android/build/intermediates/lint_vital_lint_model/release/generateReleaseLintVitalModel/release-artifact-dependencies.xml +4 -4
- package/android/build/intermediates/lint_vital_lint_model/release/generateReleaseLintVitalModel/release-artifact-libraries.xml +4 -4
- package/android/build/intermediates/local_aar_for_lint/release/out.aar +0 -0
- package/android/build/intermediates/merged_res/release/mergeReleaseResources/layout/activity_payment_done_url.xml +2 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/multi-v2/values-night-v8.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/multi-v2/values.json +38 -38
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/anim-v21.json +9 -9
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/anim.json +24 -24
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/animator-v21.json +1 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/animator.json +34 -34
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color-night-v8.json +3 -3
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color-v31.json +10 -10
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color.json +153 -153
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-anydpi-v21.json +6 -6
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-hdpi-v4.json +13 -13
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-ldpi-v4.json +6 -6
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-mdpi-v4.json +12 -12
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v21.json +4 -4
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v23.json +7 -7
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v29.json +1 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xhdpi-v4.json +12 -12
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xxhdpi-v4.json +7 -7
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xxxhdpi-v4.json +7 -7
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable.json +395 -395
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/font.json +9 -9
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/interpolator-v21.json +10 -10
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/interpolator.json +11 -11
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-land.json +3 -3
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-sw600dp-v13.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-v21.json +4 -4
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-v26.json +1 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout.json +108 -108
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-anydpi-v26.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-hdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-mdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xhdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xxhdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xxxhdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/raw.json +46 -46
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/xml.json +3 -3
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar +0 -0
- package/android/build/intermediates/source_set_path_map/release/mapReleaseSourceSetPaths/file-map.txt +38 -38
- package/android/build/intermediates/verified_library_resources/release/verifyReleaseResources/compiled/layout_activity_payment_done_url.xml.flat +0 -0
- package/android/build/outputs/aar/jimrising_easymerchantsdk-react-native-release.aar +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/reactlibrary/RNEasymerchantsdkModule.java +56 -1
- package/ios/Classes/EasyMerchantSdk.m +124 -141
- package/ios/Classes/EasyMerchantSdk.swift +270 -502
- package/ios/Classes/EasyPayViewController.swift +18 -15
- package/ios/CustomComponents/TextFieldStackView.swift +16 -46
- package/ios/EnvironmentConfig.swift +16 -0
- package/ios/Example/ViewController.swift +513 -76
- package/ios/Models/Request.swift +365 -171
- package/ios/Pods/UserDefaults/UserStoreSingleton.swift +116 -12
- package/ios/Pods/ViewControllers/AdditionalInfoVC.swift +2 -32
- package/ios/Pods/ViewControllers/GrailPayVC.swift +258 -18
- package/ios/Pods/ViewControllers/OTPVerificationVC.swift +1 -66
- package/ios/Pods/ViewControllers/PaymentInformation/PaymentInfoVC.swift +571 -369
- package/ios/Pods/ViewControllers/ThreeDSecurePaymentDoneVC.swift +18 -9
- package/ios/easymerchantsdk.podspec +1 -1
- package/ios/easymerchantsdk.storyboard +108 -85
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#import <React/RCTLog.h>
|
|
3
3
|
#import <React/RCTBridgeModule.h>
|
|
4
4
|
|
|
5
|
-
//#import
|
|
5
|
+
//#import "easymerchantsdk-Swift.h"
|
|
6
6
|
#import <easymerchantsdk/easymerchantsdk-Swift.h>
|
|
7
7
|
|
|
8
8
|
|
|
@@ -14,171 +14,154 @@
|
|
|
14
14
|
|
|
15
15
|
RCT_EXPORT_MODULE()
|
|
16
16
|
|
|
17
|
+
- (instancetype)init {
|
|
18
|
+
if (self = [super init]) {
|
|
19
|
+
_sdkPluginInstance = [EasyMerchantSdkPlugin new];
|
|
20
|
+
}
|
|
21
|
+
return self;
|
|
22
|
+
}
|
|
23
|
+
|
|
17
24
|
RCT_EXPORT_METHOD(configureEnvironment:(NSString *)env
|
|
18
25
|
apiKey:(NSString *)apiKey
|
|
19
|
-
apiSecret:(NSString *)apiSecret
|
|
26
|
+
apiSecret:(NSString *)apiSecret
|
|
27
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
28
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
20
29
|
{
|
|
30
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
21
31
|
if (!self.sdkPluginInstance) {
|
|
22
|
-
|
|
32
|
+
reject(@"NO_SDK_INSTANCE", @"SDK plugin instance is not initialized", nil);
|
|
33
|
+
return;
|
|
23
34
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
|
|
36
|
+
NSArray<NSString *> *validEnvs = @[@"production", @"sandbox", @"staging"];
|
|
37
|
+
if (![validEnvs containsObject:env.lowercaseString]) {
|
|
38
|
+
reject(@"INVALID_ENVIRONMENT", @"Environment must be 'production', 'sandbox', or 'staging'", nil);
|
|
39
|
+
return;
|
|
28
40
|
}
|
|
41
|
+
|
|
42
|
+
[self.sdkPluginInstance configureEnvironment:env
|
|
43
|
+
apiKey:apiKey
|
|
44
|
+
apiSecret:apiSecret
|
|
45
|
+
resolver:resolve
|
|
46
|
+
rejecter:reject];
|
|
47
|
+
});
|
|
29
48
|
}
|
|
30
49
|
|
|
31
|
-
RCT_EXPORT_METHOD(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
rejecter:(RCTPromiseRejectBlock)reject
|
|
35
|
-
)
|
|
50
|
+
RCT_EXPORT_METHOD(makePayment:(NSString *)jsonConfig
|
|
51
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
52
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
36
53
|
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
self.sdkPluginInstance = nil;
|
|
45
|
-
}
|
|
46
|
-
rejecter:^(NSString *code, NSString *message, NSError *error) {
|
|
47
|
-
reject(code, message, error);
|
|
48
|
-
self.sdkPluginInstance = nil;
|
|
49
|
-
}];
|
|
50
|
-
} @catch (NSException *exception) {
|
|
51
|
-
reject(@"BRIDGE_ERROR", [NSString stringWithFormat:@"Failed to call makePayment: %@", exception.reason], nil);
|
|
52
|
-
}
|
|
54
|
+
if (!self.sdkPluginInstance) {
|
|
55
|
+
reject(@"NO_SDK_INSTANCE", @"SDK plugin instance is not initialized", nil);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
59
|
+
[self.sdkPluginInstance makePayment:jsonConfig resolver:resolve rejecter:reject];
|
|
60
|
+
});
|
|
53
61
|
}
|
|
54
62
|
|
|
55
|
-
RCT_EXPORT_METHOD(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
fields:(NSDictionary *)fields
|
|
59
|
-
paymentMethods:(NSArray *)paymentMethods
|
|
60
|
-
appearanceSettings:(NSDictionary *)appearanceSettings
|
|
61
|
-
tokenOnly:(BOOL)tokenOnly
|
|
62
|
-
saveCard:(BOOL)saveCard
|
|
63
|
-
saveAccount:(BOOL)saveAccount
|
|
64
|
-
authenticatedACH:(BOOL)authenticatedACH
|
|
65
|
-
grailPayParams:(NSDictionary *)grailPayParams
|
|
66
|
-
submitButtonText:(NSString *)submitButtonText
|
|
67
|
-
isRecurring:(BOOL)isRecurring
|
|
68
|
-
numOfCycle:(NSInteger)numOfCycle
|
|
69
|
-
recurringIntervals:(NSArray *)recurringIntervals
|
|
70
|
-
recurringStartDateType:(NSString *)recurringStartDateType
|
|
71
|
-
recurringStartDate:(NSString *)recurringStartDate
|
|
72
|
-
secureAuthentication:(BOOL)secureAuthentication
|
|
73
|
-
showReceipt:(BOOL)showReceipt
|
|
74
|
-
showTotal:(BOOL)showTotal
|
|
75
|
-
showSubmitButton:(BOOL)showSubmitButton
|
|
76
|
-
isEmail:(BOOL)isEmail
|
|
77
|
-
email:(NSString *)email
|
|
78
|
-
name:(NSString *)name
|
|
79
|
-
enable3DS:(BOOL)enable3DS
|
|
80
|
-
metadata:(NSDictionary *)metadata
|
|
81
|
-
resolver:(RCTPromiseResolveBlock)resolve
|
|
82
|
-
rejecter:(RCTPromiseRejectBlock)reject
|
|
83
|
-
)
|
|
63
|
+
RCT_EXPORT_METHOD(makePaymentV2:(NSString *)jsonConfig
|
|
64
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
65
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
84
66
|
{
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
paymentMethods:paymentMethods
|
|
93
|
-
appearanceSettings:appearanceSettings
|
|
94
|
-
tokenOnly:tokenOnly
|
|
95
|
-
saveCard:saveCard
|
|
96
|
-
saveAccount:saveAccount
|
|
97
|
-
authenticatedACH:authenticatedACH
|
|
98
|
-
grailPayParams:grailPayParams
|
|
99
|
-
submitButtonText:submitButtonText
|
|
100
|
-
isRecurring:isRecurring
|
|
101
|
-
numOfCycle:numOfCycle
|
|
102
|
-
recurringIntervals:recurringIntervals
|
|
103
|
-
recurringStartDateType:recurringStartDateType
|
|
104
|
-
recurringStartDate:recurringStartDate
|
|
105
|
-
secureAuthentication:secureAuthentication
|
|
106
|
-
showReceipt:showReceipt
|
|
107
|
-
showTotal:showTotal
|
|
108
|
-
showSubmitButton:showSubmitButton
|
|
109
|
-
isEmail:isEmail
|
|
110
|
-
email:email
|
|
111
|
-
name:name
|
|
112
|
-
enable3DS:enable3DS
|
|
113
|
-
metadata:metadata
|
|
114
|
-
resolver:^(id result) {
|
|
115
|
-
resolve(result);
|
|
116
|
-
self.sdkPluginInstance = nil;
|
|
117
|
-
}
|
|
118
|
-
rejecter:^(NSString *code, NSString *message, NSError *error) {
|
|
119
|
-
reject(code, message, error);
|
|
120
|
-
self.sdkPluginInstance = nil;
|
|
121
|
-
}];
|
|
122
|
-
} @catch (NSException *exception) {
|
|
123
|
-
reject(@"BRIDGE_ERROR", [NSString stringWithFormat:@"Failed to call billing: %@", exception.reason], nil);
|
|
124
|
-
}
|
|
67
|
+
if (!self.sdkPluginInstance) {
|
|
68
|
+
reject(@"NO_SDK_INSTANCE", @"SDK plugin instance is not initialized", nil);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
72
|
+
[self.sdkPluginInstance makePaymentV2:jsonConfig resolver:resolve rejecter:reject];
|
|
73
|
+
});
|
|
125
74
|
}
|
|
126
75
|
|
|
127
|
-
RCT_EXPORT_METHOD(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
rejecter:(RCTPromiseRejectBlock)reject
|
|
131
|
-
)
|
|
76
|
+
RCT_EXPORT_METHOD(paymentReference:(NSString *)referenceToken
|
|
77
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
78
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
132
79
|
{
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
} @catch (NSException *exception) {
|
|
147
|
-
reject(@"BRIDGE_ERROR", [NSString stringWithFormat:@"Failed to call paymentReference: %@", exception.reason], nil);
|
|
148
|
-
}
|
|
80
|
+
if (!self.sdkPluginInstance) {
|
|
81
|
+
reject(@"NO_SDK_INSTANCE", @"SDK plugin instance is not initialized", nil);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (!referenceToken || [referenceToken length] == 0) {
|
|
86
|
+
reject(@"INVALID_TOKEN", @"Reference token is required", nil);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
91
|
+
[self.sdkPluginInstance paymentReference:referenceToken resolver:resolve rejecter:reject];
|
|
92
|
+
});
|
|
149
93
|
}
|
|
150
94
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
95
|
+
RCT_EXPORT_METHOD(setViewController:(RCTPromiseResolveBlock)resolve
|
|
96
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
154
97
|
{
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
EasyMerchantSdkPlugin *sdkPlugin = [[EasyMerchantSdkPlugin alloc] init];
|
|
162
|
-
[sdkPlugin setViewController:rootVC];
|
|
163
|
-
resolve(@"ViewController set");
|
|
164
|
-
} @catch (NSException *exception) {
|
|
165
|
-
reject(@"BRIDGE_ERROR", [NSString stringWithFormat:@"Failed to set view controller: %@", exception.reason], nil);
|
|
98
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
99
|
+
if (!self.sdkPluginInstance) {
|
|
100
|
+
reject(@"NO_SDK_INSTANCE", @"SDK plugin instance is not initialized", nil);
|
|
101
|
+
return;
|
|
166
102
|
}
|
|
103
|
+
|
|
104
|
+
UIViewController *topVC = [self topMostViewController];
|
|
105
|
+
if (!topVC) {
|
|
106
|
+
reject(@"NO_VIEW_CONTROLLER", @"No valid view controller found", nil);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
[self.sdkPluginInstance setViewController:topVC resolver:resolve rejecter:reject];
|
|
111
|
+
});
|
|
167
112
|
}
|
|
168
113
|
|
|
169
114
|
RCT_EXPORT_METHOD(getPlatformVersion:(RCTPromiseResolveBlock)resolve
|
|
170
115
|
rejecter:(RCTPromiseRejectBlock)reject)
|
|
171
116
|
{
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
117
|
+
if (!self.sdkPluginInstance) {
|
|
118
|
+
reject(@"NO_SDK_INSTANCE", @"SDK plugin instance is not initialized", nil);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
122
|
+
[self.sdkPluginInstance getPlatformVersion:resolve rejecter:reject];
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Helper method to find the top-most view controller
|
|
127
|
+
- (UIViewController *)topMostViewController {
|
|
128
|
+
UIWindow *keyWindow = nil;
|
|
129
|
+
|
|
130
|
+
for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) {
|
|
131
|
+
if (scene.activationState == UISceneActivationStateForegroundActive ||
|
|
132
|
+
scene.activationState == UISceneActivationStateForegroundInactive) {
|
|
133
|
+
if ([scene isKindOfClass:[UIWindowScene class]]) {
|
|
134
|
+
UIWindowScene *windowScene = (UIWindowScene *)scene;
|
|
135
|
+
for (UIWindow *window in windowScene.windows) {
|
|
136
|
+
if (window.isKeyWindow) {
|
|
137
|
+
keyWindow = window;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (keyWindow) break;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (!keyWindow) {
|
|
147
|
+
keyWindow = UIApplication.sharedApplication.keyWindow;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
UIViewController *base = keyWindow.rootViewController;
|
|
151
|
+
|
|
152
|
+
while (true) {
|
|
153
|
+
if ([base isKindOfClass:[UINavigationController class]]) {
|
|
154
|
+
base = [(UINavigationController *)base visibleViewController];
|
|
155
|
+
} else if ([base isKindOfClass:[UITabBarController class]]) {
|
|
156
|
+
base = [(UITabBarController *)base selectedViewController];
|
|
157
|
+
} else if (base.presentedViewController) {
|
|
158
|
+
base = base.presentedViewController;
|
|
159
|
+
} else {
|
|
160
|
+
break;
|
|
181
161
|
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return base;
|
|
182
165
|
}
|
|
183
166
|
|
|
184
167
|
@end
|