@circle-fin/w3s-pw-react-native-sdk 2.0.1 → 2.1.0
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/build/WalletSdk.d.ts.map +1 -1
- package/build/WalletSdk.js +43 -4
- package/build/WalletSdk.js.map +1 -1
- package/ios/ProgrammablewalletRnSdk.podspec +1 -1
- package/package.json +1 -1
- package/src/WalletSdk.ts +47 -11
package/build/WalletSdk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletSdk.d.ts","sourceRoot":"","sources":["../src/WalletSdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,UAAU,EAmBX,MAAM,SAAS,CAAA;AAmChB,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"WalletSdk.d.ts","sourceRoot":"","sources":["../src/WalletSdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,UAAU,EAmBX,MAAM,SAAS,CAAA;AAmChB,eAAO,MAAM,SAAS,YAuWlB,CAAA"}
|
package/build/WalletSdk.js
CHANGED
|
@@ -72,12 +72,19 @@ export const WalletSdk = (() => {
|
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
execute(userToken, encryptionKey, challengeIds, successCallback, errorCallback) {
|
|
75
|
+
let settled = false;
|
|
75
76
|
const successListener = ProgrammablewalletRnSdk.addListener(EVENT_NAME_ON_SUCCESS, (event) => {
|
|
77
|
+
if (settled)
|
|
78
|
+
return;
|
|
79
|
+
settled = true;
|
|
76
80
|
console.debug('[WalletSdk] Execute result');
|
|
77
81
|
successCallback(event);
|
|
78
82
|
cleanup();
|
|
79
83
|
});
|
|
80
84
|
const errorListener = ProgrammablewalletRnSdk.addListener(EVENT_NAME_ON_ERROR, (event) => {
|
|
85
|
+
if (settled)
|
|
86
|
+
return;
|
|
87
|
+
settled = true;
|
|
81
88
|
console.debug('[WalletSdk] Error event received:', event);
|
|
82
89
|
// Convert event to Error object if needed
|
|
83
90
|
const error = event instanceof Error
|
|
@@ -94,12 +101,18 @@ export const WalletSdk = (() => {
|
|
|
94
101
|
// Call native execute method
|
|
95
102
|
ProgrammablewalletRnSdk.execute(userToken, encryptionKey, challengeIds)
|
|
96
103
|
.then((successResult) => {
|
|
104
|
+
if (settled)
|
|
105
|
+
return;
|
|
106
|
+
settled = true;
|
|
97
107
|
// If Promise resolves but no event was fired, call success callback
|
|
98
108
|
console.debug('[WalletSdk] Promise resolved');
|
|
99
109
|
successCallback(successResult);
|
|
100
110
|
cleanup();
|
|
101
111
|
})
|
|
102
112
|
.catch((e) => {
|
|
113
|
+
if (settled)
|
|
114
|
+
return;
|
|
115
|
+
settled = true;
|
|
103
116
|
// If Promise rejects but no event was fired, call error callback
|
|
104
117
|
console.debug('[WalletSdk] Promise rejected:', e);
|
|
105
118
|
errorCallback(e);
|
|
@@ -107,22 +120,35 @@ export const WalletSdk = (() => {
|
|
|
107
120
|
});
|
|
108
121
|
},
|
|
109
122
|
verifyOTP(otpToken, deviceToken, deviceEncryptionKey, successCallback, errorCallback) {
|
|
110
|
-
|
|
123
|
+
let settled = false;
|
|
124
|
+
const errorListener = ProgrammablewalletRnSdk.addListener(EVENT_NAME_ON_ERROR, (event) => {
|
|
125
|
+
if (settled)
|
|
126
|
+
return;
|
|
127
|
+
settled = true;
|
|
111
128
|
// Convert event to Error object if needed
|
|
112
129
|
const error = event instanceof Error
|
|
113
130
|
? event
|
|
114
131
|
: new Error(event?.message || 'Unknown error');
|
|
115
132
|
errorCallback(error);
|
|
133
|
+
cleanup();
|
|
116
134
|
});
|
|
135
|
+
const cleanup = () => {
|
|
136
|
+
errorListener?.remove();
|
|
137
|
+
};
|
|
117
138
|
ProgrammablewalletRnSdk.verifyOTP(otpToken, deviceToken, deviceEncryptionKey)
|
|
118
139
|
.then((result) => {
|
|
140
|
+
if (settled)
|
|
141
|
+
return;
|
|
142
|
+
settled = true;
|
|
119
143
|
successCallback(result);
|
|
144
|
+
cleanup();
|
|
120
145
|
})
|
|
121
146
|
.catch((e) => {
|
|
147
|
+
if (settled)
|
|
148
|
+
return;
|
|
149
|
+
settled = true;
|
|
122
150
|
errorCallback(e);
|
|
123
|
-
|
|
124
|
-
.finally(() => {
|
|
125
|
-
ProgrammablewalletRnSdk.removeAllListeners(EVENT_NAME_ON_ERROR);
|
|
151
|
+
cleanup();
|
|
126
152
|
});
|
|
127
153
|
},
|
|
128
154
|
performLogin(provider, deviceToken, deviceEncryptionKey, successCallback, errorCallback) {
|
|
@@ -148,11 +174,18 @@ export const WalletSdk = (() => {
|
|
|
148
174
|
});
|
|
149
175
|
},
|
|
150
176
|
setBiometricsPin(userToken, encryptionKey, successCallback, errorCallback) {
|
|
177
|
+
let settled = false;
|
|
151
178
|
const successListener = ProgrammablewalletRnSdk.addListener(EVENT_NAME_ON_SUCCESS, (event) => {
|
|
179
|
+
if (settled)
|
|
180
|
+
return;
|
|
181
|
+
settled = true;
|
|
152
182
|
successCallback(event);
|
|
153
183
|
cleanup();
|
|
154
184
|
});
|
|
155
185
|
const errorListener = ProgrammablewalletRnSdk.addListener(EVENT_NAME_ON_ERROR, (event) => {
|
|
186
|
+
if (settled)
|
|
187
|
+
return;
|
|
188
|
+
settled = true;
|
|
156
189
|
console.debug('[WalletSdk] setBiometricsPin Error event received:', event);
|
|
157
190
|
// Convert event to Error object if needed
|
|
158
191
|
const error = event instanceof Error
|
|
@@ -169,12 +202,18 @@ export const WalletSdk = (() => {
|
|
|
169
202
|
// Call native setBiometricsPin method
|
|
170
203
|
ProgrammablewalletRnSdk.setBiometricsPin(userToken, encryptionKey)
|
|
171
204
|
.then((successResult) => {
|
|
205
|
+
if (settled)
|
|
206
|
+
return;
|
|
207
|
+
settled = true;
|
|
172
208
|
// If Promise resolves but no event was fired, call success callback
|
|
173
209
|
console.debug('[WalletSdk] setBiometricsPin Promise resolved:', successResult);
|
|
174
210
|
successCallback(successResult);
|
|
175
211
|
cleanup();
|
|
176
212
|
})
|
|
177
213
|
.catch((e) => {
|
|
214
|
+
if (settled)
|
|
215
|
+
return;
|
|
216
|
+
settled = true;
|
|
178
217
|
// If Promise rejects but no event was fired, call error callback
|
|
179
218
|
console.debug('[WalletSdk] setBiometricsPin Promise rejected:', e);
|
|
180
219
|
errorCallback(e);
|
package/build/WalletSdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletSdk.js","sourceRoot":"","sources":["../src/WalletSdk.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2025 Circle Internet Group, Inc. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n IWalletSdk,\n Configuration,\n TextsKey,\n IconTextsKey,\n TextKey,\n ImageKey,\n DateFormat,\n ErrorCode,\n SuccessCallback,\n LoginSuccessCallback,\n CompletedCallback,\n ErrorCallback,\n SuccessResult,\n LoginResult,\n IconTextConfig,\n TextConfig,\n SocialProvider,\n SecurityQuestion,\n InputType,\n} from './types'\nimport { bridgeSafe } from './bridgeSafe'\nconst packageJson = require('../package.json')\n\nimport ProgrammablewalletRnSdk from './ProgrammablewalletRnSdkModule'\nimport { ImageSourcePropType, Image } from 'react-native'\n\n// SDK event identifiers\nconst EVENT_NAME_ON_SUCCESS = 'CirclePwOnSuccess'\nconst EVENT_NAME_ON_ERROR = 'CirclePwOnError'\nconst USER_AGENT_RN = 'Circle-Programmable-Wallet-SDK-RN'\n\n/**\n * Resolves React Native image sources to URI strings for native bridge\n * @param source - React Native image source\n * @returns Resolved URI string or null\n */\nfunction getImageUrl(source: ImageSourcePropType): string | null {\n if (!source) {\n return null\n }\n const resolved = Image.resolveAssetSource(source)\n if (\n !resolved ||\n typeof resolved.uri !== 'string' ||\n resolved.uri.trim() === ''\n ) {\n return null\n }\n return resolved.uri\n}\n\n// Import security question utility functions\nimport { toPlainSecurityQuestion } from './utils/securityQuestionUtils'\n\nexport const WalletSdk = ((): IWalletSdk => {\n const defaultUserAgentRn = USER_AGENT_RN + '/' + packageJson.version\n return {\n sdkVersion: {\n native: ProgrammablewalletRnSdk.sdkVersion,\n rn: packageJson.version,\n },\n get deviceId() {\n return ProgrammablewalletRnSdk.getDeviceId()\n },\n getDeviceId: ProgrammablewalletRnSdk.getDeviceId,\n init(configuration: Configuration): Promise<void> {\n const promise = ProgrammablewalletRnSdk.initSdk(configuration)\n ProgrammablewalletRnSdk.setCustomUserAgent(defaultUserAgentRn)\n return promise\n },\n setSecurityQuestions(securityQuestions: Array<{ title: string; inputType?: InputType | string | number }>): void {\n try {\n // Convert each input to a proper SecurityQuestion object\n const normalized: SecurityQuestion[] = (securityQuestions || []).map(q => toPlainSecurityQuestion(q))\n\n // toPlainSecurityQuestion already performs the necessary serialization\n // No need for bridgeSafe here as each question has been converted to a plain object\n // with only primitive properties (string title and enum inputType)\n ProgrammablewalletRnSdk.setSecurityQuestions(normalized)\n } catch (e) {\n console.error('setSecurityQuestions failed:', e)\n }\n },\n execute(\n userToken: string,\n encryptionKey: string,\n challengeIds: string[],\n successCallback: SuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n const successListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_SUCCESS,\n (event: unknown) => {\n console.debug('[WalletSdk] Execute result')\n successCallback(event as SuccessResult)\n cleanup()\n },\n )\n\n const errorListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_ERROR,\n (event: unknown) => {\n console.debug('[WalletSdk] Error event received:', event)\n // Convert event to Error object if needed\n const error =\n event instanceof Error\n ? event\n : new Error((event as { message?: string })?.message || 'Unknown error')\n errorCallback(error)\n cleanup()\n },\n )\n\n // Cleanup function to remove listeners\n const cleanup = () => {\n successListener?.remove()\n errorListener?.remove()\n }\n\n // Call native execute method\n ProgrammablewalletRnSdk.execute(userToken, encryptionKey, challengeIds)\n .then((successResult: SuccessResult) => {\n // If Promise resolves but no event was fired, call success callback\n console.debug('[WalletSdk] Promise resolved')\n successCallback(successResult)\n cleanup()\n })\n .catch((e: Error) => {\n // If Promise rejects but no event was fired, call error callback\n console.debug('[WalletSdk] Promise rejected:', e)\n errorCallback(e)\n cleanup()\n })\n },\n verifyOTP(\n otpToken: string,\n deviceToken: string,\n deviceEncryptionKey: string,\n successCallback: LoginSuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n ProgrammablewalletRnSdk.addListener(EVENT_NAME_ON_ERROR, (event: unknown) => {\n // Convert event to Error object if needed\n const error =\n event instanceof Error\n ? event\n : new Error((event as { message?: string })?.message || 'Unknown error')\n errorCallback(error)\n })\n ProgrammablewalletRnSdk.verifyOTP(\n otpToken,\n deviceToken,\n deviceEncryptionKey,\n )\n .then((result: LoginResult) => {\n successCallback(result)\n })\n .catch((e: Error) => {\n errorCallback(e)\n })\n .finally(() => {\n ProgrammablewalletRnSdk.removeAllListeners(EVENT_NAME_ON_ERROR)\n })\n },\n performLogin(\n provider: SocialProvider,\n deviceToken: string,\n deviceEncryptionKey: string,\n successCallback: LoginSuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n ProgrammablewalletRnSdk.performLogin(\n provider,\n deviceToken,\n deviceEncryptionKey,\n )\n .then((successResult: LoginResult) => {\n console.debug(\n '[WalletSdk] performLogin Promise resolved:',\n successResult,\n )\n successCallback(successResult)\n })\n .catch((e: Error) => {\n console.debug('[WalletSdk] performLogin Promise rejected:', e)\n errorCallback(e)\n })\n },\n performLogout(\n provider: SocialProvider,\n completedCallback: CompletedCallback,\n errorCallback: ErrorCallback,\n ): void {\n ProgrammablewalletRnSdk.performLogout(provider)\n .then(() => {\n console.debug('[WalletSdk] performLogout Promise resolved')\n completedCallback()\n })\n .catch((e: Error) => {\n console.debug('[WalletSdk] performLogout Promise rejected:', e)\n errorCallback(e)\n })\n },\n setBiometricsPin(\n userToken: string,\n encryptionKey: string,\n successCallback: SuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n const successListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_SUCCESS,\n (event: unknown) => {\n successCallback(event as SuccessResult)\n cleanup()\n },\n )\n\n const errorListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_ERROR,\n (event: unknown) => {\n console.debug(\n '[WalletSdk] setBiometricsPin Error event received:',\n event,\n )\n // Convert event to Error object if needed\n const error =\n event instanceof Error\n ? event\n : new Error((event as { message?: string })?.message || 'Unknown error')\n errorCallback(error)\n cleanup()\n },\n )\n\n // Cleanup function to remove listeners\n const cleanup = () => {\n successListener?.remove()\n errorListener?.remove()\n }\n\n // Call native setBiometricsPin method\n ProgrammablewalletRnSdk.setBiometricsPin(userToken, encryptionKey)\n .then((successResult: SuccessResult) => {\n // If Promise resolves but no event was fired, call success callback\n console.debug(\n '[WalletSdk] setBiometricsPin Promise resolved:',\n successResult,\n )\n successCallback(successResult)\n cleanup()\n })\n .catch((e: Error) => {\n // If Promise rejects but no event was fired, call error callback\n console.debug('[WalletSdk] setBiometricsPin Promise rejected:', e)\n errorCallback(e)\n cleanup()\n })\n },\n\n setDismissOnCallbackMap(map: Map<ErrorCode, boolean>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, boolean>\n ProgrammablewalletRnSdk.setDismissOnCallbackMap(serialized)\n } catch (e) {\n console.error('setDismissOnCallbackMap failed:', e)\n }\n },\n moveTaskToFront(): void {\n try {\n ProgrammablewalletRnSdk.moveTaskToFront()\n } catch (e) {\n console.error('moveTaskToFront failed:', e)\n }\n },\n moveRnTaskToFront(): void {\n try {\n ProgrammablewalletRnSdk.moveRnTaskToFront()\n } catch (e) {\n console.error('moveRnTaskToFront failed:', e)\n }\n },\n setTextConfigsMap(map: Map<TextsKey, TextConfig[]>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, TextConfig[]>\n ProgrammablewalletRnSdk.setTextConfigsMap(serialized)\n } catch (e) {\n console.error('setTextConfigsMap failed:', e)\n }\n },\n\n setIconTextConfigsMap(\n rawMap: Map<IconTextsKey, Array<IconTextConfig>>,\n ): void {\n try {\n // Create a transformed plain object instead of a Map\n const processedObj: Record<string, Array<{ image: string | null; textConfig: TextConfig }>> = {}\n\n Array.from(rawMap.entries()).forEach(([key, configs]) => {\n const processedConfigs = configs.map(config => {\n const { image, textConfig = {} } = config as IconTextConfig\n // Process image URL, as this is React Native specific logic\n return {\n image: image ? getImageUrl(image) : null,\n textConfig,\n }\n })\n processedObj[String(key)] = processedConfigs\n })\n\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(processedObj) as Record<string, unknown>\n ProgrammablewalletRnSdk.setIconTextConfigsMap(serialized)\n } catch (e) {\n console.error('setIconTextConfigsMap Error:', e)\n }\n },\n setTextConfigMap(map: Map<TextKey, TextConfig>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, TextConfig>\n ProgrammablewalletRnSdk.setTextConfigMap(serialized)\n } catch (e) {\n console.error('setTextConfigMap failed:', e)\n }\n },\n\n setImageMap(map: Map<ImageKey, ImageSourcePropType>): void {\n try {\n // Process image URLs, this part needs to be preserved\n const processedMap = new Map<ImageKey, string>()\n\n map.forEach((value, key) => {\n const url = getImageUrl(value)\n // Only keep non-null URLs\n if (url !== null) {\n processedMap.set(key, url)\n }\n })\n\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(processedMap) as Record<string, string>\n ProgrammablewalletRnSdk.setImageMap(serialized)\n } catch (e) {\n console.error('setImageMap failed:', e)\n }\n },\n setDateFormat(format: DateFormat): void {\n try {\n ProgrammablewalletRnSdk.setDateFormat(format)\n } catch (e) {\n console.error('setDateFormat failed:', e)\n }\n },\n setDebugging(debugging: boolean): void {\n try {\n ProgrammablewalletRnSdk.setDebugging(debugging)\n } catch (e) {\n console.error('setDebugging failed:', e)\n }\n },\n setCustomUserAgent(userAgent: string): void {\n ProgrammablewalletRnSdk.setCustomUserAgent(\n defaultUserAgentRn + ' | ' + userAgent,\n )\n },\n setErrorStringMap(map: Map<ErrorCode, string>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, string>\n ProgrammablewalletRnSdk.setErrorStringMap(serialized)\n } catch (e) {\n console.error('setErrorStringMap failed:', e)\n }\n },\n }\n})()\n"]}
|
|
1
|
+
{"version":3,"file":"WalletSdk.js","sourceRoot":"","sources":["../src/WalletSdk.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2025 Circle Internet Group, Inc. All rights reserved.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n IWalletSdk,\n Configuration,\n TextsKey,\n IconTextsKey,\n TextKey,\n ImageKey,\n DateFormat,\n ErrorCode,\n SuccessCallback,\n LoginSuccessCallback,\n CompletedCallback,\n ErrorCallback,\n SuccessResult,\n LoginResult,\n IconTextConfig,\n TextConfig,\n SocialProvider,\n SecurityQuestion,\n InputType,\n} from './types'\nimport { bridgeSafe } from './bridgeSafe'\nconst packageJson = require('../package.json')\n\nimport ProgrammablewalletRnSdk from './ProgrammablewalletRnSdkModule'\nimport { ImageSourcePropType, Image } from 'react-native'\n\n// SDK event identifiers\nconst EVENT_NAME_ON_SUCCESS = 'CirclePwOnSuccess'\nconst EVENT_NAME_ON_ERROR = 'CirclePwOnError'\nconst USER_AGENT_RN = 'Circle-Programmable-Wallet-SDK-RN'\n\n/**\n * Resolves React Native image sources to URI strings for native bridge\n * @param source - React Native image source\n * @returns Resolved URI string or null\n */\nfunction getImageUrl(source: ImageSourcePropType): string | null {\n if (!source) {\n return null\n }\n const resolved = Image.resolveAssetSource(source)\n if (\n !resolved ||\n typeof resolved.uri !== 'string' ||\n resolved.uri.trim() === ''\n ) {\n return null\n }\n return resolved.uri\n}\n\n// Import security question utility functions\nimport { toPlainSecurityQuestion } from './utils/securityQuestionUtils'\n\nexport const WalletSdk = ((): IWalletSdk => {\n const defaultUserAgentRn = USER_AGENT_RN + '/' + packageJson.version\n return {\n sdkVersion: {\n native: ProgrammablewalletRnSdk.sdkVersion,\n rn: packageJson.version,\n },\n get deviceId() {\n return ProgrammablewalletRnSdk.getDeviceId()\n },\n getDeviceId: ProgrammablewalletRnSdk.getDeviceId,\n init(configuration: Configuration): Promise<void> {\n const promise = ProgrammablewalletRnSdk.initSdk(configuration)\n ProgrammablewalletRnSdk.setCustomUserAgent(defaultUserAgentRn)\n return promise\n },\n setSecurityQuestions(securityQuestions: Array<{ title: string; inputType?: InputType | string | number }>): void {\n try {\n // Convert each input to a proper SecurityQuestion object\n const normalized: SecurityQuestion[] = (securityQuestions || []).map(q => toPlainSecurityQuestion(q))\n\n // toPlainSecurityQuestion already performs the necessary serialization\n // No need for bridgeSafe here as each question has been converted to a plain object\n // with only primitive properties (string title and enum inputType)\n ProgrammablewalletRnSdk.setSecurityQuestions(normalized)\n } catch (e) {\n console.error('setSecurityQuestions failed:', e)\n }\n },\n execute(\n userToken: string,\n encryptionKey: string,\n challengeIds: string[],\n successCallback: SuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n let settled = false\n\n const successListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_SUCCESS,\n (event: unknown) => {\n if (settled) return\n settled = true\n console.debug('[WalletSdk] Execute result')\n successCallback(event as SuccessResult)\n cleanup()\n },\n )\n\n const errorListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_ERROR,\n (event: unknown) => {\n if (settled) return\n settled = true\n console.debug('[WalletSdk] Error event received:', event)\n // Convert event to Error object if needed\n const error =\n event instanceof Error\n ? event\n : new Error((event as { message?: string })?.message || 'Unknown error')\n errorCallback(error)\n cleanup()\n },\n )\n\n // Cleanup function to remove listeners\n const cleanup = () => {\n successListener?.remove()\n errorListener?.remove()\n }\n\n // Call native execute method\n ProgrammablewalletRnSdk.execute(userToken, encryptionKey, challengeIds)\n .then((successResult: SuccessResult) => {\n if (settled) return\n settled = true\n // If Promise resolves but no event was fired, call success callback\n console.debug('[WalletSdk] Promise resolved')\n successCallback(successResult)\n cleanup()\n })\n .catch((e: Error) => {\n if (settled) return\n settled = true\n // If Promise rejects but no event was fired, call error callback\n console.debug('[WalletSdk] Promise rejected:', e)\n errorCallback(e)\n cleanup()\n })\n },\n verifyOTP(\n otpToken: string,\n deviceToken: string,\n deviceEncryptionKey: string,\n successCallback: LoginSuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n let settled = false\n\n const errorListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_ERROR,\n (event: unknown) => {\n if (settled) return\n settled = true\n // Convert event to Error object if needed\n const error =\n event instanceof Error\n ? event\n : new Error((event as { message?: string })?.message || 'Unknown error')\n errorCallback(error)\n cleanup()\n },\n )\n\n const cleanup = () => {\n errorListener?.remove()\n }\n\n ProgrammablewalletRnSdk.verifyOTP(\n otpToken,\n deviceToken,\n deviceEncryptionKey,\n )\n .then((result: LoginResult) => {\n if (settled) return\n settled = true\n successCallback(result)\n cleanup()\n })\n .catch((e: Error) => {\n if (settled) return\n settled = true\n errorCallback(e)\n cleanup()\n })\n },\n performLogin(\n provider: SocialProvider,\n deviceToken: string,\n deviceEncryptionKey: string,\n successCallback: LoginSuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n ProgrammablewalletRnSdk.performLogin(\n provider,\n deviceToken,\n deviceEncryptionKey,\n )\n .then((successResult: LoginResult) => {\n console.debug(\n '[WalletSdk] performLogin Promise resolved:',\n successResult,\n )\n successCallback(successResult)\n })\n .catch((e: Error) => {\n console.debug('[WalletSdk] performLogin Promise rejected:', e)\n errorCallback(e)\n })\n },\n performLogout(\n provider: SocialProvider,\n completedCallback: CompletedCallback,\n errorCallback: ErrorCallback,\n ): void {\n ProgrammablewalletRnSdk.performLogout(provider)\n .then(() => {\n console.debug('[WalletSdk] performLogout Promise resolved')\n completedCallback()\n })\n .catch((e: Error) => {\n console.debug('[WalletSdk] performLogout Promise rejected:', e)\n errorCallback(e)\n })\n },\n setBiometricsPin(\n userToken: string,\n encryptionKey: string,\n successCallback: SuccessCallback,\n errorCallback: ErrorCallback,\n ): void {\n let settled = false\n\n const successListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_SUCCESS,\n (event: unknown) => {\n if (settled) return\n settled = true\n successCallback(event as SuccessResult)\n cleanup()\n },\n )\n\n const errorListener = ProgrammablewalletRnSdk.addListener(\n EVENT_NAME_ON_ERROR,\n (event: unknown) => {\n if (settled) return\n settled = true\n console.debug(\n '[WalletSdk] setBiometricsPin Error event received:',\n event,\n )\n // Convert event to Error object if needed\n const error =\n event instanceof Error\n ? event\n : new Error((event as { message?: string })?.message || 'Unknown error')\n errorCallback(error)\n cleanup()\n },\n )\n\n // Cleanup function to remove listeners\n const cleanup = () => {\n successListener?.remove()\n errorListener?.remove()\n }\n\n // Call native setBiometricsPin method\n ProgrammablewalletRnSdk.setBiometricsPin(userToken, encryptionKey)\n .then((successResult: SuccessResult) => {\n if (settled) return\n settled = true\n // If Promise resolves but no event was fired, call success callback\n console.debug(\n '[WalletSdk] setBiometricsPin Promise resolved:',\n successResult,\n )\n successCallback(successResult)\n cleanup()\n })\n .catch((e: Error) => {\n if (settled) return\n settled = true\n // If Promise rejects but no event was fired, call error callback\n console.debug('[WalletSdk] setBiometricsPin Promise rejected:', e)\n errorCallback(e)\n cleanup()\n })\n },\n\n setDismissOnCallbackMap(map: Map<ErrorCode, boolean>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, boolean>\n ProgrammablewalletRnSdk.setDismissOnCallbackMap(serialized)\n } catch (e) {\n console.error('setDismissOnCallbackMap failed:', e)\n }\n },\n moveTaskToFront(): void {\n try {\n ProgrammablewalletRnSdk.moveTaskToFront()\n } catch (e) {\n console.error('moveTaskToFront failed:', e)\n }\n },\n moveRnTaskToFront(): void {\n try {\n ProgrammablewalletRnSdk.moveRnTaskToFront()\n } catch (e) {\n console.error('moveRnTaskToFront failed:', e)\n }\n },\n setTextConfigsMap(map: Map<TextsKey, TextConfig[]>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, TextConfig[]>\n ProgrammablewalletRnSdk.setTextConfigsMap(serialized)\n } catch (e) {\n console.error('setTextConfigsMap failed:', e)\n }\n },\n\n setIconTextConfigsMap(\n rawMap: Map<IconTextsKey, Array<IconTextConfig>>,\n ): void {\n try {\n // Create a transformed plain object instead of a Map\n const processedObj: Record<string, Array<{ image: string | null; textConfig: TextConfig }>> = {}\n\n Array.from(rawMap.entries()).forEach(([key, configs]) => {\n const processedConfigs = configs.map(config => {\n const { image, textConfig = {} } = config as IconTextConfig\n // Process image URL, as this is React Native specific logic\n return {\n image: image ? getImageUrl(image) : null,\n textConfig,\n }\n })\n processedObj[String(key)] = processedConfigs\n })\n\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(processedObj) as Record<string, unknown>\n ProgrammablewalletRnSdk.setIconTextConfigsMap(serialized)\n } catch (e) {\n console.error('setIconTextConfigsMap Error:', e)\n }\n },\n setTextConfigMap(map: Map<TextKey, TextConfig>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, TextConfig>\n ProgrammablewalletRnSdk.setTextConfigMap(serialized)\n } catch (e) {\n console.error('setTextConfigMap failed:', e)\n }\n },\n\n setImageMap(map: Map<ImageKey, ImageSourcePropType>): void {\n try {\n // Process image URLs, this part needs to be preserved\n const processedMap = new Map<ImageKey, string>()\n\n map.forEach((value, key) => {\n const url = getImageUrl(value)\n // Only keep non-null URLs\n if (url !== null) {\n processedMap.set(key, url)\n }\n })\n\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(processedMap) as Record<string, string>\n ProgrammablewalletRnSdk.setImageMap(serialized)\n } catch (e) {\n console.error('setImageMap failed:', e)\n }\n },\n setDateFormat(format: DateFormat): void {\n try {\n ProgrammablewalletRnSdk.setDateFormat(format)\n } catch (e) {\n console.error('setDateFormat failed:', e)\n }\n },\n setDebugging(debugging: boolean): void {\n try {\n ProgrammablewalletRnSdk.setDebugging(debugging)\n } catch (e) {\n console.error('setDebugging failed:', e)\n }\n },\n setCustomUserAgent(userAgent: string): void {\n ProgrammablewalletRnSdk.setCustomUserAgent(\n defaultUserAgentRn + ' | ' + userAgent,\n )\n },\n setErrorStringMap(map: Map<ErrorCode, string>): void {\n try {\n // Use bridgeSafe for serialization and ensure the result is a non-null object\n const serialized = bridgeSafe(map) as Record<string, string>\n ProgrammablewalletRnSdk.setErrorStringMap(serialized)\n } catch (e) {\n console.error('setErrorStringMap failed:', e)\n }\n },\n }\n})()\n"]}
|
|
@@ -19,7 +19,7 @@ Pod::Spec.new do |s|
|
|
|
19
19
|
s.static_framework = true
|
|
20
20
|
|
|
21
21
|
s.dependency 'ExpoModulesCore'
|
|
22
|
-
s.dependency 'CircleProgrammableWalletSDK_static', '1.
|
|
22
|
+
s.dependency 'CircleProgrammableWalletSDK_static', '1.4.0'
|
|
23
23
|
|
|
24
24
|
# Swift/Objective-C compatibility
|
|
25
25
|
s.pod_target_xcconfig = {
|
package/package.json
CHANGED
package/src/WalletSdk.ts
CHANGED
|
@@ -107,9 +107,13 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
107
107
|
successCallback: SuccessCallback,
|
|
108
108
|
errorCallback: ErrorCallback,
|
|
109
109
|
): void {
|
|
110
|
+
let settled = false
|
|
111
|
+
|
|
110
112
|
const successListener = ProgrammablewalletRnSdk.addListener(
|
|
111
113
|
EVENT_NAME_ON_SUCCESS,
|
|
112
114
|
(event: unknown) => {
|
|
115
|
+
if (settled) return
|
|
116
|
+
settled = true
|
|
113
117
|
console.debug('[WalletSdk] Execute result')
|
|
114
118
|
successCallback(event as SuccessResult)
|
|
115
119
|
cleanup()
|
|
@@ -119,6 +123,8 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
119
123
|
const errorListener = ProgrammablewalletRnSdk.addListener(
|
|
120
124
|
EVENT_NAME_ON_ERROR,
|
|
121
125
|
(event: unknown) => {
|
|
126
|
+
if (settled) return
|
|
127
|
+
settled = true
|
|
122
128
|
console.debug('[WalletSdk] Error event received:', event)
|
|
123
129
|
// Convert event to Error object if needed
|
|
124
130
|
const error =
|
|
@@ -139,12 +145,16 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
139
145
|
// Call native execute method
|
|
140
146
|
ProgrammablewalletRnSdk.execute(userToken, encryptionKey, challengeIds)
|
|
141
147
|
.then((successResult: SuccessResult) => {
|
|
148
|
+
if (settled) return
|
|
149
|
+
settled = true
|
|
142
150
|
// If Promise resolves but no event was fired, call success callback
|
|
143
151
|
console.debug('[WalletSdk] Promise resolved')
|
|
144
152
|
successCallback(successResult)
|
|
145
153
|
cleanup()
|
|
146
154
|
})
|
|
147
155
|
.catch((e: Error) => {
|
|
156
|
+
if (settled) return
|
|
157
|
+
settled = true
|
|
148
158
|
// If Promise rejects but no event was fired, call error callback
|
|
149
159
|
console.debug('[WalletSdk] Promise rejected:', e)
|
|
150
160
|
errorCallback(e)
|
|
@@ -158,27 +168,43 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
158
168
|
successCallback: LoginSuccessCallback,
|
|
159
169
|
errorCallback: ErrorCallback,
|
|
160
170
|
): void {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
let settled = false
|
|
172
|
+
|
|
173
|
+
const errorListener = ProgrammablewalletRnSdk.addListener(
|
|
174
|
+
EVENT_NAME_ON_ERROR,
|
|
175
|
+
(event: unknown) => {
|
|
176
|
+
if (settled) return
|
|
177
|
+
settled = true
|
|
178
|
+
// Convert event to Error object if needed
|
|
179
|
+
const error =
|
|
180
|
+
event instanceof Error
|
|
181
|
+
? event
|
|
182
|
+
: new Error((event as { message?: string })?.message || 'Unknown error')
|
|
183
|
+
errorCallback(error)
|
|
184
|
+
cleanup()
|
|
185
|
+
},
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
const cleanup = () => {
|
|
189
|
+
errorListener?.remove()
|
|
190
|
+
}
|
|
191
|
+
|
|
169
192
|
ProgrammablewalletRnSdk.verifyOTP(
|
|
170
193
|
otpToken,
|
|
171
194
|
deviceToken,
|
|
172
195
|
deviceEncryptionKey,
|
|
173
196
|
)
|
|
174
197
|
.then((result: LoginResult) => {
|
|
198
|
+
if (settled) return
|
|
199
|
+
settled = true
|
|
175
200
|
successCallback(result)
|
|
201
|
+
cleanup()
|
|
176
202
|
})
|
|
177
203
|
.catch((e: Error) => {
|
|
204
|
+
if (settled) return
|
|
205
|
+
settled = true
|
|
178
206
|
errorCallback(e)
|
|
179
|
-
|
|
180
|
-
.finally(() => {
|
|
181
|
-
ProgrammablewalletRnSdk.removeAllListeners(EVENT_NAME_ON_ERROR)
|
|
207
|
+
cleanup()
|
|
182
208
|
})
|
|
183
209
|
},
|
|
184
210
|
performLogin(
|
|
@@ -226,9 +252,13 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
226
252
|
successCallback: SuccessCallback,
|
|
227
253
|
errorCallback: ErrorCallback,
|
|
228
254
|
): void {
|
|
255
|
+
let settled = false
|
|
256
|
+
|
|
229
257
|
const successListener = ProgrammablewalletRnSdk.addListener(
|
|
230
258
|
EVENT_NAME_ON_SUCCESS,
|
|
231
259
|
(event: unknown) => {
|
|
260
|
+
if (settled) return
|
|
261
|
+
settled = true
|
|
232
262
|
successCallback(event as SuccessResult)
|
|
233
263
|
cleanup()
|
|
234
264
|
},
|
|
@@ -237,6 +267,8 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
237
267
|
const errorListener = ProgrammablewalletRnSdk.addListener(
|
|
238
268
|
EVENT_NAME_ON_ERROR,
|
|
239
269
|
(event: unknown) => {
|
|
270
|
+
if (settled) return
|
|
271
|
+
settled = true
|
|
240
272
|
console.debug(
|
|
241
273
|
'[WalletSdk] setBiometricsPin Error event received:',
|
|
242
274
|
event,
|
|
@@ -260,6 +292,8 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
260
292
|
// Call native setBiometricsPin method
|
|
261
293
|
ProgrammablewalletRnSdk.setBiometricsPin(userToken, encryptionKey)
|
|
262
294
|
.then((successResult: SuccessResult) => {
|
|
295
|
+
if (settled) return
|
|
296
|
+
settled = true
|
|
263
297
|
// If Promise resolves but no event was fired, call success callback
|
|
264
298
|
console.debug(
|
|
265
299
|
'[WalletSdk] setBiometricsPin Promise resolved:',
|
|
@@ -269,6 +303,8 @@ export const WalletSdk = ((): IWalletSdk => {
|
|
|
269
303
|
cleanup()
|
|
270
304
|
})
|
|
271
305
|
.catch((e: Error) => {
|
|
306
|
+
if (settled) return
|
|
307
|
+
settled = true
|
|
272
308
|
// If Promise rejects but no event was fired, call error callback
|
|
273
309
|
console.debug('[WalletSdk] setBiometricsPin Promise rejected:', e)
|
|
274
310
|
errorCallback(e)
|