@finos_sdk/sdk-ekyc 1.2.1 → 1.2.8
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/LICENSE +13 -10
- package/README.md +41 -42
- package/android/build.gradle +53 -20
- package/android/gradle.properties +7 -1
- package/android/settings.gradle +53 -0
- package/android/src/main/java/finos/sdk/ekyc/EKYCModule.kt +790 -82
- package/dist/EKYCModule.d.ts +72 -0
- package/dist/EKYCModule.js +650 -71
- package/dist/finos_sdk-sdk-ekyc-1.2.8.tgz +0 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.js +5 -1
- package/dist/package.json +31 -21
- package/dist/src/modules/FinosEKYCModule.d.ts +147 -2
- package/dist/src/modules/FinosEKYCModule.js +476 -4
- package/dist/src/modules/FinosESignModule.d.ts +270 -0
- package/dist/src/modules/FinosESignModule.js +752 -0
- package/dist/src/types/ekycESignType.d.ts +67 -0
- package/dist/src/types/ekycESignType.js +2 -0
- package/dist/src/types/ekycLivenessType.d.ts +1 -0
- package/dist/src/types/ekycSmsOtpType.d.ts +52 -0
- package/dist/src/types/ekycSmsOtpType.js +2 -0
- package/package.json +31 -21
- package/src/modules/FinosEKYCModule.ts +563 -4
- package/src/modules/FinosESignModule.ts +919 -0
- package/src/modules/README.md +3 -3
- package/src/types/ekycESignType.ts +76 -0
- package/src/types/ekycLivenessType.ts +1 -0
- package/src/types/ekycSmsOtpType.ts +59 -0
- package/android/SDKeKYC/finos/sdk/ekyc/c06/1.2.0/c06-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/c06/1.2.0/c06-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/c06/1.2.0/c06-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/c06/1.2.0/c06-1.2.0.module +0 -130
- package/android/SDKeKYC/finos/sdk/ekyc/c06/1.2.0/c06-1.2.0.pom +0 -37
- package/android/SDKeKYC/finos/sdk/ekyc/c06/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/ekyc/1.2.0/ekyc-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ekyc/1.2.0/ekyc-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ekyc/1.2.0/ekyc-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ekyc/1.2.0/ekyc-1.2.0.module +0 -221
- package/android/SDKeKYC/finos/sdk/ekyc/ekyc/1.2.0/ekyc-1.2.0.pom +0 -73
- package/android/SDKeKYC/finos/sdk/ekyc/ekyc/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/ekycui/1.2.0/ekycui-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ekycui/1.2.0/ekycui-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ekycui/1.2.0/ekycui-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ekycui/1.2.0/ekycui-1.2.0.module +0 -151
- package/android/SDKeKYC/finos/sdk/ekyc/ekycui/1.2.0/ekycui-1.2.0.pom +0 -43
- package/android/SDKeKYC/finos/sdk/ekyc/ekycui/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/faceservice/1.2.0/faceservice-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/faceservice/1.2.0/faceservice-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/faceservice/1.2.0/faceservice-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/faceservice/1.2.0/faceservice-1.2.0.module +0 -130
- package/android/SDKeKYC/finos/sdk/ekyc/faceservice/1.2.0/faceservice-1.2.0.pom +0 -37
- package/android/SDKeKYC/finos/sdk/ekyc/faceservice/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/liveness/1.2.0/liveness-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/liveness/1.2.0/liveness-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/liveness/1.2.0/liveness-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/liveness/1.2.0/liveness-1.2.0.module +0 -158
- package/android/SDKeKYC/finos/sdk/ekyc/liveness/1.2.0/liveness-1.2.0.pom +0 -55
- package/android/SDKeKYC/finos/sdk/ekyc/liveness/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/nfc/1.2.0/nfc-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/nfc/1.2.0/nfc-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/nfc/1.2.0/nfc-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/nfc/1.2.0/nfc-1.2.0.module +0 -151
- package/android/SDKeKYC/finos/sdk/ekyc/nfc/1.2.0/nfc-1.2.0.pom +0 -55
- package/android/SDKeKYC/finos/sdk/ekyc/nfc/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/ocr/1.2.0/ocr-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ocr/1.2.0/ocr-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ocr/1.2.0/ocr-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/ocr/1.2.0/ocr-1.2.0.module +0 -144
- package/android/SDKeKYC/finos/sdk/ekyc/ocr/1.2.0/ocr-1.2.0.pom +0 -43
- package/android/SDKeKYC/finos/sdk/ekyc/ocr/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/qrcode/1.2.0/qrcode-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/qrcode/1.2.0/qrcode-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/qrcode/1.2.0/qrcode-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/qrcode/1.2.0/qrcode-1.2.0.module +0 -158
- package/android/SDKeKYC/finos/sdk/ekyc/qrcode/1.2.0/qrcode-1.2.0.pom +0 -55
- package/android/SDKeKYC/finos/sdk/ekyc/qrcode/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcore/1.2.0/sdkcore-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcore/1.2.0/sdkcore-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcore/1.2.0/sdkcore-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcore/1.2.0/sdkcore-1.2.0.module +0 -361
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcore/1.2.0/sdkcore-1.2.0.pom +0 -139
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcore/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcorecamera/1.2.0/sdkcorecamera-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcorecamera/1.2.0/sdkcorecamera-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcorecamera/1.2.0/sdkcorecamera-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcorecamera/1.2.0/sdkcorecamera-1.2.0.module +0 -221
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcorecamera/1.2.0/sdkcorecamera-1.2.0.pom +0 -85
- package/android/SDKeKYC/finos/sdk/ekyc/sdkcorecamera/maven-metadata-local.xml +0 -13
- package/android/SDKeKYC/finos/sdk/ekyc/sdkui/1.2.0/sdkui-1.2.0-javadoc.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkui/1.2.0/sdkui-1.2.0-sources.jar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkui/1.2.0/sdkui-1.2.0.aar +0 -0
- package/android/SDKeKYC/finos/sdk/ekyc/sdkui/1.2.0/sdkui-1.2.0.module +0 -228
- package/android/SDKeKYC/finos/sdk/ekyc/sdkui/1.2.0/sdkui-1.2.0.pom +0 -103
- package/android/SDKeKYC/finos/sdk/ekyc/sdkui/maven-metadata-local.xml +0 -13
- package/android/src/main/AndroidManifest.xml +0 -22
- package/android/src/main/build.gradle +0 -31
- package/dist/App.d.ts +0 -3
- package/dist/App.js +0 -497
package/dist/EKYCModule.js
CHANGED
|
@@ -9,10 +9,10 @@ const react_native_1 = require("react-native");
|
|
|
9
9
|
const package_json_1 = __importDefault(require("./package.json"));
|
|
10
10
|
exports.SDK_VERSION = package_json_1.default.version;
|
|
11
11
|
exports.SDK_NAME = package_json_1.default.name;
|
|
12
|
-
const EKYCNativeModule = react_native_1.NativeModules.EKYCModule;
|
|
13
|
-
// Validate that the module is available
|
|
12
|
+
const EKYCNativeModule = react_native_1.NativeModules.EKYCModule || null;
|
|
13
|
+
// Validate that the module is available - but don't throw, just warn
|
|
14
14
|
if (!EKYCNativeModule) {
|
|
15
|
-
|
|
15
|
+
console.error('❌ EKYCModule is not available. This is likely an autolinking issue.\n' +
|
|
16
16
|
'Please try:\n' +
|
|
17
17
|
'1. Clean and rebuild your app:\n' +
|
|
18
18
|
' - rm -rf android/app/build android/build\n' +
|
|
@@ -21,35 +21,62 @@ if (!EKYCNativeModule) {
|
|
|
21
21
|
'2. If using manual linking, remove it and rely on autolinking\n' +
|
|
22
22
|
'3. Ensure you have the latest version: npm install @finos_sdk/sdk-ekyc@latest');
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
.
|
|
24
|
+
else {
|
|
25
|
+
console.log('✅ Native module loaded');
|
|
26
|
+
// Initialize the module with Koin error handling
|
|
27
|
+
try {
|
|
28
|
+
EKYCNativeModule.initSdkEkyc()
|
|
29
|
+
.then(() => {
|
|
30
|
+
console.log("✅ SDK initialized");
|
|
31
|
+
})
|
|
32
|
+
.catch(e => {
|
|
33
|
+
if (e && e.toString().includes('Koin Application has already been started')) {
|
|
34
|
+
console.log("✅ SDK already initialized");
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.warn("❌ Failed to initialize SDK:", e);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
29
42
|
if (e && e.toString().includes('Koin Application has already been started')) {
|
|
30
|
-
console.log("✅ SDK already initialized
|
|
43
|
+
console.log("✅ SDK already initialized");
|
|
31
44
|
}
|
|
32
45
|
else {
|
|
33
|
-
console.warn("❌
|
|
46
|
+
console.warn("❌ Exception when initializing SDK:", e);
|
|
34
47
|
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
if (e && e.toString().includes('Koin Application has already been started')) {
|
|
39
|
-
console.log("✅ SDK already initialized (Koin Application started)");
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
console.warn("❌ Exception when calling initSdkEkyc:", e);
|
|
43
48
|
}
|
|
44
49
|
}
|
|
45
50
|
class SDKeKYC {
|
|
46
51
|
constructor() {
|
|
52
|
+
this.eventEmitter = null;
|
|
47
53
|
this.listeners = [];
|
|
48
54
|
this.isInitialized = false;
|
|
49
|
-
|
|
55
|
+
// Lazy initialization of event emitter to ensure native module is ready
|
|
56
|
+
}
|
|
57
|
+
// Ensure event emitter is initialized
|
|
58
|
+
ensureEventEmitter() {
|
|
59
|
+
if (!this.eventEmitter) {
|
|
60
|
+
if (!EKYCNativeModule) {
|
|
61
|
+
console.error('❌ EKYCModule native module is not available');
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
this.eventEmitter = new react_native_1.NativeEventEmitter(EKYCNativeModule);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error('❌ Failed to create NativeEventEmitter:', error);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return this.eventEmitter;
|
|
50
73
|
}
|
|
51
74
|
// SDK Information methods
|
|
52
75
|
async getVersion() {
|
|
76
|
+
if (!EKYCNativeModule) {
|
|
77
|
+
console.warn('⚠️ EKYCModule not available, returning fallback version');
|
|
78
|
+
return exports.SDK_VERSION;
|
|
79
|
+
}
|
|
53
80
|
try {
|
|
54
81
|
return await EKYCNativeModule.getVersion();
|
|
55
82
|
}
|
|
@@ -59,6 +86,14 @@ class SDKeKYC {
|
|
|
59
86
|
}
|
|
60
87
|
}
|
|
61
88
|
async getSDKInfo() {
|
|
89
|
+
if (!EKYCNativeModule) {
|
|
90
|
+
console.warn('⚠️ EKYCModule not available, returning fallback info');
|
|
91
|
+
return {
|
|
92
|
+
name: exports.SDK_NAME,
|
|
93
|
+
version: exports.SDK_VERSION,
|
|
94
|
+
buildNumber: '1'
|
|
95
|
+
};
|
|
96
|
+
}
|
|
62
97
|
try {
|
|
63
98
|
return await EKYCNativeModule.getSDKInfo();
|
|
64
99
|
}
|
|
@@ -73,6 +108,11 @@ class SDKeKYC {
|
|
|
73
108
|
}
|
|
74
109
|
// Initialize SDK with better error handling
|
|
75
110
|
async initSdkEkyc() {
|
|
111
|
+
if (!EKYCNativeModule) {
|
|
112
|
+
const error = 'EKYCModule native module is not available. Please check autolinking.';
|
|
113
|
+
console.error('❌', error);
|
|
114
|
+
throw new Error(error);
|
|
115
|
+
}
|
|
76
116
|
try {
|
|
77
117
|
const result = await EKYCNativeModule.initSdkEkyc();
|
|
78
118
|
this.isInitialized = true;
|
|
@@ -94,8 +134,16 @@ class SDKeKYC {
|
|
|
94
134
|
isSDKInitialized() {
|
|
95
135
|
return this.isInitialized;
|
|
96
136
|
}
|
|
137
|
+
// Validate native module is available
|
|
138
|
+
ensureNativeModule() {
|
|
139
|
+
if (!EKYCNativeModule) {
|
|
140
|
+
throw new Error('EKYCModule native module is not available. Please check autolinking.');
|
|
141
|
+
}
|
|
142
|
+
return EKYCNativeModule;
|
|
143
|
+
}
|
|
97
144
|
// Validate configuration before calling native methods
|
|
98
145
|
validateConfig(config, requiredFields) {
|
|
146
|
+
this.ensureNativeModule(); // Check native module first
|
|
99
147
|
if (!this.isInitialized) {
|
|
100
148
|
throw new Error('SDK is not initialized. Please call initSdkEkyc() first.');
|
|
101
149
|
}
|
|
@@ -108,8 +156,9 @@ class SDKeKYC {
|
|
|
108
156
|
async startOcr(config) {
|
|
109
157
|
var _a;
|
|
110
158
|
this.validateConfig(config, ['appKey', 'idImagePath', 'expectedDocumentSide', 'transactionId']);
|
|
159
|
+
const nativeModule = this.ensureNativeModule();
|
|
111
160
|
try {
|
|
112
|
-
return await
|
|
161
|
+
return await nativeModule.startOcr(config.appKey, config.idImagePath, config.expectedDocumentSide, (_a = config.transactionId) !== null && _a !== void 0 ? _a : '');
|
|
113
162
|
}
|
|
114
163
|
catch (error) {
|
|
115
164
|
console.error('OCR Error:', error);
|
|
@@ -119,8 +168,9 @@ class SDKeKYC {
|
|
|
119
168
|
// Start NFC scanning
|
|
120
169
|
async startNfcScan(config) {
|
|
121
170
|
this.validateConfig(config, ['appKey', 'documentNumber', 'birthDate', 'expireDate']);
|
|
171
|
+
const nativeModule = this.ensureNativeModule();
|
|
122
172
|
try {
|
|
123
|
-
return await
|
|
173
|
+
return await nativeModule.startNfcScan(config.appKey, config.documentNumber, config.birthDate, config.expireDate, config.transactionId, config.facePathStorage);
|
|
124
174
|
}
|
|
125
175
|
catch (error) {
|
|
126
176
|
console.error('NFC Scan Error:', error);
|
|
@@ -131,8 +181,9 @@ class SDKeKYC {
|
|
|
131
181
|
async checkC06(config) {
|
|
132
182
|
var _a, _b;
|
|
133
183
|
this.validateConfig(config, ['appKey', 'sod', 'idCardNumber', 'recentLocation']);
|
|
184
|
+
const nativeModule = this.ensureNativeModule();
|
|
134
185
|
try {
|
|
135
|
-
return await
|
|
186
|
+
return await nativeModule.checkC06(config.appKey, config.sod, config.idCardNumber, (_a = config.recentLocation) !== null && _a !== void 0 ? _a : '', (_b = config.transactionId) !== null && _b !== void 0 ? _b : '');
|
|
136
187
|
}
|
|
137
188
|
catch (error) {
|
|
138
189
|
console.error('C06 Check Error:', error);
|
|
@@ -142,8 +193,9 @@ class SDKeKYC {
|
|
|
142
193
|
async startLiveness(config) {
|
|
143
194
|
var _a;
|
|
144
195
|
this.validateConfig(config, ['appKey', 'selfieImage', 'transactionId']);
|
|
196
|
+
const nativeModule = this.ensureNativeModule();
|
|
145
197
|
try {
|
|
146
|
-
return await
|
|
198
|
+
return await nativeModule.startLiveness(config.appKey, config.selfieImage, config.usingRandomAction, (_a = config.transactionId) !== null && _a !== void 0 ? _a : '', config.isStraight, config.switchFrontCamera !== undefined ? config.switchFrontCamera : false);
|
|
147
199
|
}
|
|
148
200
|
catch (error) {
|
|
149
201
|
console.error('Liveness Error:', error);
|
|
@@ -153,8 +205,9 @@ class SDKeKYC {
|
|
|
153
205
|
async startFaceCompare(config) {
|
|
154
206
|
var _a;
|
|
155
207
|
this.validateConfig(config, ['appKey', 'selfieImage', 'idImage']);
|
|
208
|
+
const nativeModule = this.ensureNativeModule();
|
|
156
209
|
try {
|
|
157
|
-
return await
|
|
210
|
+
return await nativeModule.startFaceCompare(config.appKey, (_a = config.transactionId) !== null && _a !== void 0 ? _a : '', config.selfieImage, config.idImage);
|
|
158
211
|
}
|
|
159
212
|
catch (error) {
|
|
160
213
|
console.error('Face Compare Error:', error);
|
|
@@ -163,94 +216,619 @@ class SDKeKYC {
|
|
|
163
216
|
}
|
|
164
217
|
// Lifecycle methods
|
|
165
218
|
onResume() {
|
|
166
|
-
|
|
219
|
+
const nativeModule = this.ensureNativeModule();
|
|
220
|
+
nativeModule.onResume();
|
|
167
221
|
}
|
|
168
222
|
onPause() {
|
|
169
|
-
|
|
223
|
+
const nativeModule = this.ensureNativeModule();
|
|
224
|
+
nativeModule.onPause();
|
|
170
225
|
}
|
|
171
226
|
// Event listeners
|
|
172
227
|
onNfcScanStart(callback) {
|
|
173
|
-
|
|
228
|
+
try {
|
|
229
|
+
const emitter = this.ensureEventEmitter();
|
|
230
|
+
if (!emitter) {
|
|
231
|
+
console.error('❌ Event emitter not available for onNfcScanStart');
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
const listener = emitter.addListener('onNfcScanStart', callback);
|
|
235
|
+
this.listeners.push(listener);
|
|
236
|
+
return listener;
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
console.error('Failed to add onNfcScanStart listener:', error);
|
|
174
240
|
return null;
|
|
175
|
-
|
|
176
|
-
this.listeners.push(listener);
|
|
177
|
-
return listener;
|
|
241
|
+
}
|
|
178
242
|
}
|
|
179
243
|
onNfcScanSuccess(callback) {
|
|
180
|
-
|
|
244
|
+
try {
|
|
245
|
+
const emitter = this.ensureEventEmitter();
|
|
246
|
+
if (!emitter) {
|
|
247
|
+
console.error('❌ Event emitter not available for onNfcScanSuccess');
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
const listener = emitter.addListener('onNfcScanSuccess', callback);
|
|
251
|
+
this.listeners.push(listener);
|
|
252
|
+
return listener;
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
console.error('Failed to add onNfcScanSuccess listener:', error);
|
|
181
256
|
return null;
|
|
182
|
-
|
|
183
|
-
this.listeners.push(listener);
|
|
184
|
-
return listener;
|
|
257
|
+
}
|
|
185
258
|
}
|
|
186
259
|
onNfcError(callback) {
|
|
187
|
-
|
|
260
|
+
try {
|
|
261
|
+
const emitter = this.ensureEventEmitter();
|
|
262
|
+
if (!emitter) {
|
|
263
|
+
console.error('❌ Event emitter not available for onNfcError');
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
const listener = emitter.addListener('onNfcError', callback);
|
|
267
|
+
this.listeners.push(listener);
|
|
268
|
+
return listener;
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.error('Failed to add onNfcError listener:', error);
|
|
188
272
|
return null;
|
|
189
|
-
|
|
190
|
-
this.listeners.push(listener);
|
|
191
|
-
return listener;
|
|
273
|
+
}
|
|
192
274
|
}
|
|
193
275
|
onC06Success(callback) {
|
|
194
|
-
|
|
276
|
+
try {
|
|
277
|
+
const emitter = this.ensureEventEmitter();
|
|
278
|
+
if (!emitter) {
|
|
279
|
+
console.error('❌ Event emitter not available for onC06Success');
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
const listener = emitter.addListener('onC06Success', callback);
|
|
283
|
+
this.listeners.push(listener);
|
|
284
|
+
return listener;
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
console.error('Failed to add onC06Success listener:', error);
|
|
195
288
|
return null;
|
|
196
|
-
|
|
197
|
-
this.listeners.push(listener);
|
|
198
|
-
return listener;
|
|
289
|
+
}
|
|
199
290
|
}
|
|
200
291
|
onC06Error(callback) {
|
|
201
|
-
|
|
292
|
+
try {
|
|
293
|
+
const emitter = this.ensureEventEmitter();
|
|
294
|
+
if (!emitter) {
|
|
295
|
+
console.error('❌ Event emitter not available for onC06Error');
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
const listener = emitter.addListener('onC06Error', callback);
|
|
299
|
+
this.listeners.push(listener);
|
|
300
|
+
return listener;
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
console.error('Failed to add onC06Error listener:', error);
|
|
202
304
|
return null;
|
|
203
|
-
|
|
204
|
-
this.listeners.push(listener);
|
|
205
|
-
return listener;
|
|
305
|
+
}
|
|
206
306
|
}
|
|
207
307
|
// Additional listeners (native emits these):
|
|
208
308
|
onOcrSuccess(callback) {
|
|
209
|
-
|
|
309
|
+
try {
|
|
310
|
+
const emitter = this.ensureEventEmitter();
|
|
311
|
+
if (!emitter) {
|
|
312
|
+
console.error('❌ Event emitter not available for onOcrSuccess');
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
const listener = emitter.addListener('onOcrSuccess', callback);
|
|
316
|
+
this.listeners.push(listener);
|
|
317
|
+
return listener;
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
console.error('Failed to add onOcrSuccess listener:', error);
|
|
210
321
|
return null;
|
|
211
|
-
|
|
212
|
-
this.listeners.push(listener);
|
|
213
|
-
return listener;
|
|
322
|
+
}
|
|
214
323
|
}
|
|
215
324
|
onOcrError(callback) {
|
|
216
|
-
|
|
325
|
+
try {
|
|
326
|
+
const emitter = this.ensureEventEmitter();
|
|
327
|
+
if (!emitter) {
|
|
328
|
+
console.error('❌ Event emitter not available for onOcrError');
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
const listener = emitter.addListener('onOcrError', callback);
|
|
332
|
+
this.listeners.push(listener);
|
|
333
|
+
return listener;
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
console.error('Failed to add onOcrError listener:', error);
|
|
217
337
|
return null;
|
|
218
|
-
|
|
219
|
-
this.listeners.push(listener);
|
|
220
|
-
return listener;
|
|
338
|
+
}
|
|
221
339
|
}
|
|
222
340
|
onLivenessSuccess(callback) {
|
|
223
|
-
|
|
341
|
+
try {
|
|
342
|
+
const emitter = this.ensureEventEmitter();
|
|
343
|
+
if (!emitter) {
|
|
344
|
+
console.error('❌ Event emitter not available for onLivenessSuccess');
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
const listener = emitter.addListener('onLivenessSuccess', callback);
|
|
348
|
+
this.listeners.push(listener);
|
|
349
|
+
return listener;
|
|
350
|
+
}
|
|
351
|
+
catch (error) {
|
|
352
|
+
console.error('Failed to add onLivenessSuccess listener:', error);
|
|
224
353
|
return null;
|
|
225
|
-
|
|
226
|
-
this.listeners.push(listener);
|
|
227
|
-
return listener;
|
|
354
|
+
}
|
|
228
355
|
}
|
|
229
356
|
onLivenessError(callback) {
|
|
230
|
-
|
|
357
|
+
try {
|
|
358
|
+
const emitter = this.ensureEventEmitter();
|
|
359
|
+
if (!emitter) {
|
|
360
|
+
console.error('❌ Event emitter not available for onLivenessError');
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
const listener = emitter.addListener('onLivenessError', callback);
|
|
364
|
+
this.listeners.push(listener);
|
|
365
|
+
return listener;
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
console.error('Failed to add onLivenessError listener:', error);
|
|
231
369
|
return null;
|
|
232
|
-
|
|
233
|
-
this.listeners.push(listener);
|
|
234
|
-
return listener;
|
|
370
|
+
}
|
|
235
371
|
}
|
|
236
372
|
onFaceCompareSuccess(callback) {
|
|
237
|
-
|
|
373
|
+
try {
|
|
374
|
+
const emitter = this.ensureEventEmitter();
|
|
375
|
+
if (!emitter) {
|
|
376
|
+
console.error('❌ Event emitter not available for onFaceCompareSuccess');
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
const listener = emitter.addListener('onFaceCompareSuccess', callback);
|
|
380
|
+
this.listeners.push(listener);
|
|
381
|
+
return listener;
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
console.error('Failed to add onFaceCompareSuccess listener:', error);
|
|
238
385
|
return null;
|
|
239
|
-
|
|
240
|
-
this.listeners.push(listener);
|
|
241
|
-
return listener;
|
|
386
|
+
}
|
|
242
387
|
}
|
|
243
388
|
onFaceCompareError(callback) {
|
|
244
|
-
|
|
389
|
+
try {
|
|
390
|
+
const emitter = this.ensureEventEmitter();
|
|
391
|
+
if (!emitter) {
|
|
392
|
+
console.error('❌ Event emitter not available for onFaceCompareError');
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
395
|
+
const listener = emitter.addListener('onFaceCompareError', callback);
|
|
396
|
+
this.listeners.push(listener);
|
|
397
|
+
return listener;
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
console.error('Failed to add onFaceCompareError listener:', error);
|
|
245
401
|
return null;
|
|
246
|
-
|
|
247
|
-
this.listeners.push(listener);
|
|
248
|
-
return listener;
|
|
402
|
+
}
|
|
249
403
|
}
|
|
250
404
|
removeAllListeners() {
|
|
251
405
|
this.listeners.forEach(listener => listener.remove());
|
|
252
406
|
this.listeners = [];
|
|
253
407
|
}
|
|
408
|
+
// ==================== SMS OTP Methods ====================
|
|
409
|
+
async sendOtp(config) {
|
|
410
|
+
this.validateConfig(config, ['phoneNumber', 'referenceId']);
|
|
411
|
+
const nativeModule = this.ensureNativeModule();
|
|
412
|
+
try {
|
|
413
|
+
const result = await nativeModule.sendOtp(config.phoneNumber, config.purpose || null, config.referenceId);
|
|
414
|
+
return result;
|
|
415
|
+
}
|
|
416
|
+
catch (error) {
|
|
417
|
+
console.error('SMS OTP Send Error:', error);
|
|
418
|
+
throw error;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
async verifyOtp(config, otpCode) {
|
|
422
|
+
if (!config.requestId) {
|
|
423
|
+
throw new Error('requestId is required for verifyOtp');
|
|
424
|
+
}
|
|
425
|
+
this.validateConfig(config, ['phoneNumber', 'referenceId', 'requestId']);
|
|
426
|
+
const nativeModule = this.ensureNativeModule();
|
|
427
|
+
try {
|
|
428
|
+
const result = await nativeModule.verifyOtp(config.phoneNumber, config.purpose || null, config.referenceId, config.requestId, otpCode);
|
|
429
|
+
return result;
|
|
430
|
+
}
|
|
431
|
+
catch (error) {
|
|
432
|
+
console.error('SMS OTP Verify Error:', error);
|
|
433
|
+
throw error;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
async resendOtp(config) {
|
|
437
|
+
if (!config.requestId) {
|
|
438
|
+
throw new Error('requestId is required for resendOtp');
|
|
439
|
+
}
|
|
440
|
+
this.validateConfig(config, ['phoneNumber', 'referenceId', 'requestId']);
|
|
441
|
+
const nativeModule = this.ensureNativeModule();
|
|
442
|
+
try {
|
|
443
|
+
const result = await nativeModule.resendOtp(config.phoneNumber, config.purpose || null, config.referenceId, config.requestId);
|
|
444
|
+
return result;
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
console.error('SMS OTP Resend Error:', error);
|
|
448
|
+
throw error;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
// SMS OTP Event Listeners
|
|
452
|
+
onSmsOtpSendSuccess(callback) {
|
|
453
|
+
try {
|
|
454
|
+
const emitter = this.ensureEventEmitter();
|
|
455
|
+
if (!emitter) {
|
|
456
|
+
console.error('❌ Event emitter not available for onSmsOtpSendSuccess');
|
|
457
|
+
return null;
|
|
458
|
+
}
|
|
459
|
+
const listener = emitter.addListener('onSmsOtpSendSuccess', callback);
|
|
460
|
+
this.listeners.push(listener);
|
|
461
|
+
return listener;
|
|
462
|
+
}
|
|
463
|
+
catch (error) {
|
|
464
|
+
console.error('Failed to add onSmsOtpSendSuccess listener:', error);
|
|
465
|
+
return null;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
onSmsOtpVerifySuccess(callback) {
|
|
469
|
+
try {
|
|
470
|
+
const emitter = this.ensureEventEmitter();
|
|
471
|
+
if (!emitter) {
|
|
472
|
+
console.error('❌ Event emitter not available for onSmsOtpVerifySuccess');
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
const listener = emitter.addListener('onSmsOtpVerifySuccess', callback);
|
|
476
|
+
this.listeners.push(listener);
|
|
477
|
+
return listener;
|
|
478
|
+
}
|
|
479
|
+
catch (error) {
|
|
480
|
+
console.error('Failed to add onSmsOtpVerifySuccess listener:', error);
|
|
481
|
+
return null;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
onSmsOtpResendSuccess(callback) {
|
|
485
|
+
try {
|
|
486
|
+
const emitter = this.ensureEventEmitter();
|
|
487
|
+
if (!emitter) {
|
|
488
|
+
console.error('❌ Event emitter not available for onSmsOtpResendSuccess');
|
|
489
|
+
return null;
|
|
490
|
+
}
|
|
491
|
+
const listener = emitter.addListener('onSmsOtpResendSuccess', callback);
|
|
492
|
+
this.listeners.push(listener);
|
|
493
|
+
return listener;
|
|
494
|
+
}
|
|
495
|
+
catch (error) {
|
|
496
|
+
console.error('Failed to add onSmsOtpResendSuccess listener:', error);
|
|
497
|
+
return null;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
onSmsOtpError(callback) {
|
|
501
|
+
try {
|
|
502
|
+
const emitter = this.ensureEventEmitter();
|
|
503
|
+
if (!emitter) {
|
|
504
|
+
console.error('❌ Event emitter not available for onSmsOtpError');
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
const listener = emitter.addListener('onSmsOtpError', callback);
|
|
508
|
+
this.listeners.push(listener);
|
|
509
|
+
return listener;
|
|
510
|
+
}
|
|
511
|
+
catch (error) {
|
|
512
|
+
console.error('Failed to add onSmsOtpError listener:', error);
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
// ==================== eSign Methods ====================
|
|
517
|
+
async initializeESign() {
|
|
518
|
+
const nativeModule = this.ensureNativeModule();
|
|
519
|
+
try {
|
|
520
|
+
const result = await nativeModule.initializeESign();
|
|
521
|
+
return result;
|
|
522
|
+
}
|
|
523
|
+
catch (error) {
|
|
524
|
+
console.error('eSign Initialize Error:', error);
|
|
525
|
+
throw error;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
async openSessionId(accessToken, username, rememberMe, userEsignModel, privateKeyFilePath) {
|
|
529
|
+
const nativeModule = this.ensureNativeModule();
|
|
530
|
+
try {
|
|
531
|
+
const userEsignModelJson = userEsignModel ? JSON.stringify(userEsignModel) : null;
|
|
532
|
+
const result = await nativeModule.openSessionId(accessToken || null, username || null, rememberMe !== undefined ? rememberMe : false, userEsignModelJson, privateKeyFilePath || null);
|
|
533
|
+
return result;
|
|
534
|
+
}
|
|
535
|
+
catch (error) {
|
|
536
|
+
console.error('eSign Open Session Error:', error);
|
|
537
|
+
throw error;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
async registerDevice(recoverCode, pinCode, fcmToken) {
|
|
541
|
+
const nativeModule = this.ensureNativeModule();
|
|
542
|
+
try {
|
|
543
|
+
const result = await nativeModule.registerDevice(recoverCode, pinCode, fcmToken || null);
|
|
544
|
+
return result;
|
|
545
|
+
}
|
|
546
|
+
catch (error) {
|
|
547
|
+
console.error('eSign Register Device Error:', error);
|
|
548
|
+
throw error;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
async listCerts(pageNumber = 1, pageSize = 10) {
|
|
552
|
+
const nativeModule = this.ensureNativeModule();
|
|
553
|
+
try {
|
|
554
|
+
const result = await nativeModule.listCerts(pageNumber, pageSize);
|
|
555
|
+
return result;
|
|
556
|
+
}
|
|
557
|
+
catch (error) {
|
|
558
|
+
console.error('eSign List Certs Error:', error);
|
|
559
|
+
throw error;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
async verifyCert(serial) {
|
|
563
|
+
const nativeModule = this.ensureNativeModule();
|
|
564
|
+
try {
|
|
565
|
+
const result = await nativeModule.verifyCert(serial);
|
|
566
|
+
return result;
|
|
567
|
+
}
|
|
568
|
+
catch (error) {
|
|
569
|
+
console.error('eSign Verify Cert Error:', error);
|
|
570
|
+
throw error;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
async listSignRequest(pageNumber = 1, pageSize = 10) {
|
|
574
|
+
const nativeModule = this.ensureNativeModule();
|
|
575
|
+
try {
|
|
576
|
+
const result = await nativeModule.listSignRequest(pageNumber, pageSize);
|
|
577
|
+
return result;
|
|
578
|
+
}
|
|
579
|
+
catch (error) {
|
|
580
|
+
console.error('eSign List Sign Request Error:', error);
|
|
581
|
+
throw error;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
async confirmSign(signRequestId, pinCode, authId, authData, confirm = true) {
|
|
585
|
+
const nativeModule = this.ensureNativeModule();
|
|
586
|
+
try {
|
|
587
|
+
const result = await nativeModule.confirmSign(signRequestId, pinCode, authId || null, authData || null, confirm !== undefined ? confirm : true);
|
|
588
|
+
return result;
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
console.error('eSign Confirm Sign Error:', error);
|
|
592
|
+
throw error;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
async authenticate(username, password) {
|
|
596
|
+
const nativeModule = this.ensureNativeModule();
|
|
597
|
+
try {
|
|
598
|
+
const result = await nativeModule.authenticate(username, password);
|
|
599
|
+
return result;
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
console.error('eSign Authenticate Error:', error);
|
|
603
|
+
throw error;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
async registerRemoteSigning(accessToken, requestJson) {
|
|
607
|
+
const nativeModule = this.ensureNativeModule();
|
|
608
|
+
try {
|
|
609
|
+
const result = await nativeModule.registerRemoteSigning(accessToken, requestJson);
|
|
610
|
+
return result;
|
|
611
|
+
}
|
|
612
|
+
catch (error) {
|
|
613
|
+
console.error('eSign Register Remote Signing Error:', error);
|
|
614
|
+
throw error;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
async signPdf(accessToken, requestJson) {
|
|
618
|
+
const nativeModule = this.ensureNativeModule();
|
|
619
|
+
try {
|
|
620
|
+
const result = await nativeModule.signPdf(accessToken, requestJson);
|
|
621
|
+
return result;
|
|
622
|
+
}
|
|
623
|
+
catch (error) {
|
|
624
|
+
console.error('eSign Sign PDF Error:', error);
|
|
625
|
+
throw error;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
async sendConfirmationDocument(accessToken, requestJson) {
|
|
629
|
+
const nativeModule = this.ensureNativeModule();
|
|
630
|
+
try {
|
|
631
|
+
const result = await nativeModule.sendConfirmationDocument(accessToken, requestJson);
|
|
632
|
+
return result;
|
|
633
|
+
}
|
|
634
|
+
catch (error) {
|
|
635
|
+
console.error('eSign Send Confirmation Document Error:', error);
|
|
636
|
+
throw error;
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
// eSign Event Listeners
|
|
640
|
+
onESignInitSuccess(callback) {
|
|
641
|
+
try {
|
|
642
|
+
const emitter = this.ensureEventEmitter();
|
|
643
|
+
if (!emitter) {
|
|
644
|
+
console.error('❌ Event emitter not available for onESignInitSuccess');
|
|
645
|
+
return null;
|
|
646
|
+
}
|
|
647
|
+
const listener = emitter.addListener('onESignInitSuccess', callback);
|
|
648
|
+
this.listeners.push(listener);
|
|
649
|
+
return listener;
|
|
650
|
+
}
|
|
651
|
+
catch (error) {
|
|
652
|
+
console.error('Failed to add onESignInitSuccess listener:', error);
|
|
653
|
+
return null;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
onESignOpenSessionSuccess(callback) {
|
|
657
|
+
try {
|
|
658
|
+
const emitter = this.ensureEventEmitter();
|
|
659
|
+
if (!emitter) {
|
|
660
|
+
console.error('❌ Event emitter not available for onESignOpenSessionSuccess');
|
|
661
|
+
return null;
|
|
662
|
+
}
|
|
663
|
+
const listener = emitter.addListener('onESignOpenSessionSuccess', callback);
|
|
664
|
+
this.listeners.push(listener);
|
|
665
|
+
return listener;
|
|
666
|
+
}
|
|
667
|
+
catch (error) {
|
|
668
|
+
console.error('Failed to add onESignOpenSessionSuccess listener:', error);
|
|
669
|
+
return null;
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
onESignRegisterDeviceSuccess(callback) {
|
|
673
|
+
try {
|
|
674
|
+
const emitter = this.ensureEventEmitter();
|
|
675
|
+
if (!emitter) {
|
|
676
|
+
console.error('❌ Event emitter not available for onESignRegisterDeviceSuccess');
|
|
677
|
+
return null;
|
|
678
|
+
}
|
|
679
|
+
const listener = emitter.addListener('onESignRegisterDeviceSuccess', callback);
|
|
680
|
+
this.listeners.push(listener);
|
|
681
|
+
return listener;
|
|
682
|
+
}
|
|
683
|
+
catch (error) {
|
|
684
|
+
console.error('Failed to add onESignRegisterDeviceSuccess listener:', error);
|
|
685
|
+
return null;
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
onESignListCertsSuccess(callback) {
|
|
689
|
+
try {
|
|
690
|
+
const emitter = this.ensureEventEmitter();
|
|
691
|
+
if (!emitter) {
|
|
692
|
+
console.error('❌ Event emitter not available for onESignListCertsSuccess');
|
|
693
|
+
return null;
|
|
694
|
+
}
|
|
695
|
+
const listener = emitter.addListener('onESignListCertsSuccess', callback);
|
|
696
|
+
this.listeners.push(listener);
|
|
697
|
+
return listener;
|
|
698
|
+
}
|
|
699
|
+
catch (error) {
|
|
700
|
+
console.error('Failed to add onESignListCertsSuccess listener:', error);
|
|
701
|
+
return null;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
onESignVerifyCertSuccess(callback) {
|
|
705
|
+
try {
|
|
706
|
+
const emitter = this.ensureEventEmitter();
|
|
707
|
+
if (!emitter) {
|
|
708
|
+
console.error('❌ Event emitter not available for onESignVerifyCertSuccess');
|
|
709
|
+
return null;
|
|
710
|
+
}
|
|
711
|
+
const listener = emitter.addListener('onESignVerifyCertSuccess', callback);
|
|
712
|
+
this.listeners.push(listener);
|
|
713
|
+
return listener;
|
|
714
|
+
}
|
|
715
|
+
catch (error) {
|
|
716
|
+
console.error('Failed to add onESignVerifyCertSuccess listener:', error);
|
|
717
|
+
return null;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
onESignListSignRequestSuccess(callback) {
|
|
721
|
+
try {
|
|
722
|
+
const emitter = this.ensureEventEmitter();
|
|
723
|
+
if (!emitter) {
|
|
724
|
+
console.error('❌ Event emitter not available for onESignListSignRequestSuccess');
|
|
725
|
+
return null;
|
|
726
|
+
}
|
|
727
|
+
const listener = emitter.addListener('onESignListSignRequestSuccess', callback);
|
|
728
|
+
this.listeners.push(listener);
|
|
729
|
+
return listener;
|
|
730
|
+
}
|
|
731
|
+
catch (error) {
|
|
732
|
+
console.error('Failed to add onESignListSignRequestSuccess listener:', error);
|
|
733
|
+
return null;
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
onESignConfirmSignSuccess(callback) {
|
|
737
|
+
try {
|
|
738
|
+
const emitter = this.ensureEventEmitter();
|
|
739
|
+
if (!emitter) {
|
|
740
|
+
console.error('❌ Event emitter not available for onESignConfirmSignSuccess');
|
|
741
|
+
return null;
|
|
742
|
+
}
|
|
743
|
+
const listener = emitter.addListener('onESignConfirmSignSuccess', callback);
|
|
744
|
+
this.listeners.push(listener);
|
|
745
|
+
return listener;
|
|
746
|
+
}
|
|
747
|
+
catch (error) {
|
|
748
|
+
console.error('Failed to add onESignConfirmSignSuccess listener:', error);
|
|
749
|
+
return null;
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
onESignAuthenticateSuccess(callback) {
|
|
753
|
+
try {
|
|
754
|
+
const emitter = this.ensureEventEmitter();
|
|
755
|
+
if (!emitter) {
|
|
756
|
+
console.error('❌ Event emitter not available for onESignAuthenticateSuccess');
|
|
757
|
+
return null;
|
|
758
|
+
}
|
|
759
|
+
const listener = emitter.addListener('onESignAuthenticateSuccess', callback);
|
|
760
|
+
this.listeners.push(listener);
|
|
761
|
+
return listener;
|
|
762
|
+
}
|
|
763
|
+
catch (error) {
|
|
764
|
+
console.error('Failed to add onESignAuthenticateSuccess listener:', error);
|
|
765
|
+
return null;
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
onESignRegisterRemoteSigningSuccess(callback) {
|
|
769
|
+
try {
|
|
770
|
+
const emitter = this.ensureEventEmitter();
|
|
771
|
+
if (!emitter) {
|
|
772
|
+
console.error('❌ Event emitter not available for onESignRegisterRemoteSigningSuccess');
|
|
773
|
+
return null;
|
|
774
|
+
}
|
|
775
|
+
const listener = emitter.addListener('onESignRegisterRemoteSigningSuccess', callback);
|
|
776
|
+
this.listeners.push(listener);
|
|
777
|
+
return listener;
|
|
778
|
+
}
|
|
779
|
+
catch (error) {
|
|
780
|
+
console.error('Failed to add onESignRegisterRemoteSigningSuccess listener:', error);
|
|
781
|
+
return null;
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
onESignSignPdfSuccess(callback) {
|
|
785
|
+
try {
|
|
786
|
+
const emitter = this.ensureEventEmitter();
|
|
787
|
+
if (!emitter) {
|
|
788
|
+
console.error('❌ Event emitter not available for onESignSignPdfSuccess');
|
|
789
|
+
return null;
|
|
790
|
+
}
|
|
791
|
+
const listener = emitter.addListener('onESignSignPdfSuccess', callback);
|
|
792
|
+
this.listeners.push(listener);
|
|
793
|
+
return listener;
|
|
794
|
+
}
|
|
795
|
+
catch (error) {
|
|
796
|
+
console.error('Failed to add onESignSignPdfSuccess listener:', error);
|
|
797
|
+
return null;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
onESignSendConfirmationDocumentSuccess(callback) {
|
|
801
|
+
try {
|
|
802
|
+
const emitter = this.ensureEventEmitter();
|
|
803
|
+
if (!emitter) {
|
|
804
|
+
console.error('❌ Event emitter not available for onESignSendConfirmationDocumentSuccess');
|
|
805
|
+
return null;
|
|
806
|
+
}
|
|
807
|
+
const listener = emitter.addListener('onESignSendConfirmationDocumentSuccess', callback);
|
|
808
|
+
this.listeners.push(listener);
|
|
809
|
+
return listener;
|
|
810
|
+
}
|
|
811
|
+
catch (error) {
|
|
812
|
+
console.error('Failed to add onESignSendConfirmationDocumentSuccess listener:', error);
|
|
813
|
+
return null;
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
onESignError(callback) {
|
|
817
|
+
try {
|
|
818
|
+
const emitter = this.ensureEventEmitter();
|
|
819
|
+
if (!emitter) {
|
|
820
|
+
console.error('❌ Event emitter not available for onESignError');
|
|
821
|
+
return null;
|
|
822
|
+
}
|
|
823
|
+
const listener = emitter.addListener('onESignError', callback);
|
|
824
|
+
this.listeners.push(listener);
|
|
825
|
+
return listener;
|
|
826
|
+
}
|
|
827
|
+
catch (error) {
|
|
828
|
+
console.error('Failed to add onESignError listener:', error);
|
|
829
|
+
return null;
|
|
830
|
+
}
|
|
831
|
+
}
|
|
254
832
|
// SdkEkycUI method
|
|
255
833
|
async startEkycUI(appKey, flowSDK, language, transactionId, appKeyConfig, optionConfig, styleConfig) {
|
|
256
834
|
if (!this.isInitialized) {
|
|
@@ -265,7 +843,8 @@ class SDKeKYC {
|
|
|
265
843
|
const optionConfigJson = optionConfig ? JSON.stringify(optionConfig) : '{}';
|
|
266
844
|
const appKeyConfigJson = JSON.stringify(appKeyConfig);
|
|
267
845
|
const styleConfigJson = styleConfig ? JSON.stringify(styleConfig) : '{}';
|
|
268
|
-
const
|
|
846
|
+
const nativeModule = this.ensureNativeModule();
|
|
847
|
+
const result = await nativeModule.startEkycUI(appKey, flowSDKJson, language, transactionId, optionConfigJson, appKeyConfigJson, styleConfigJson);
|
|
269
848
|
console.log('✅ SdkEkycUI started successfully');
|
|
270
849
|
return result;
|
|
271
850
|
}
|