@oobit/react-native-sdk 1.0.6 → 1.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/README.md +177 -377
- package/dist/WidgetSDK.d.ts +3 -0
- package/dist/WidgetSDK.d.ts.map +1 -1
- package/dist/WidgetSDK.js +58 -75
- package/dist/WidgetSDK.js.map +1 -1
- package/dist/index.d.ts +8 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -13
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +59 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -1
- package/src/WidgetSDK.tsx +65 -108
- package/src/index.ts +30 -38
- package/src/types.ts +66 -19
- package/src/biometricUtils.ts +0 -183
package/dist/WidgetSDK.d.ts
CHANGED
|
@@ -5,7 +5,10 @@
|
|
|
5
5
|
import React from "react";
|
|
6
6
|
import { WidgetSDKConfig } from "./types";
|
|
7
7
|
export interface WidgetSDKRef {
|
|
8
|
+
/** Navigate back within the widget */
|
|
8
9
|
navigateBack: () => void;
|
|
10
|
+
/** Reload the widget */
|
|
11
|
+
reload: () => void;
|
|
9
12
|
}
|
|
10
13
|
export declare const WidgetSDK: React.ForwardRefExoticComponent<WidgetSDKConfig & React.RefAttributes<WidgetSDKRef>>;
|
|
11
14
|
//# sourceMappingURL=WidgetSDK.d.ts.map
|
package/dist/WidgetSDK.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetSDK.d.ts","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetSDK.d.ts","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AAWf,OAAO,EAAyC,eAAe,EAAE,MAAM,SAAS,CAAC;AAIjF,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,wBAAwB;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,sFA6SrB,CAAC"}
|
package/dist/WidgetSDK.js
CHANGED
|
@@ -41,11 +41,20 @@ exports.WidgetSDK = void 0;
|
|
|
41
41
|
const react_1 = __importStar(require("react"));
|
|
42
42
|
const react_native_1 = require("react-native");
|
|
43
43
|
const react_native_webview_1 = require("react-native-webview");
|
|
44
|
-
const biometricUtils_1 = require("./biometricUtils");
|
|
45
44
|
const config_1 = require("./config");
|
|
46
|
-
const cryptoUtils_1 = require("./cryptoUtils");
|
|
47
45
|
const walletUtils_1 = require("./walletUtils");
|
|
48
|
-
|
|
46
|
+
const Clipboard = __importStar(require("expo-clipboard"));
|
|
47
|
+
exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, environment, onReady, onError, onClose, onTransactionRequested, onLoadingChange, debug = false, loadingIndicatorColor = "#007AFF", }, ref) => {
|
|
48
|
+
// Debug logger - only logs when debug is enabled
|
|
49
|
+
const log = debug
|
|
50
|
+
? (...args) => console.log("[WidgetSDK]", ...args)
|
|
51
|
+
: () => { };
|
|
52
|
+
const logError = debug
|
|
53
|
+
? (...args) => console.error("[WidgetSDK]", ...args)
|
|
54
|
+
: () => { };
|
|
55
|
+
const logWarn = debug
|
|
56
|
+
? (...args) => console.warn("[WidgetSDK]", ...args)
|
|
57
|
+
: () => { };
|
|
49
58
|
const webViewRef = (0, react_1.useRef)(null);
|
|
50
59
|
const [walletAvailable, setWalletAvailable] = (0, react_1.useState)(false);
|
|
51
60
|
const [isLoading, setIsLoading] = (0, react_1.useState)(true);
|
|
@@ -67,7 +76,7 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
67
76
|
});
|
|
68
77
|
return () => backHandler.remove();
|
|
69
78
|
}, []);
|
|
70
|
-
// Expose
|
|
79
|
+
// Expose methods via ref
|
|
71
80
|
(0, react_1.useImperativeHandle)(ref, () => ({
|
|
72
81
|
navigateBack: () => {
|
|
73
82
|
sendMessageToWidget({
|
|
@@ -75,7 +84,17 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
75
84
|
timestamp: Date.now(),
|
|
76
85
|
});
|
|
77
86
|
},
|
|
87
|
+
reload: () => {
|
|
88
|
+
log("Reloading widget");
|
|
89
|
+
setIsLoading(true);
|
|
90
|
+
hasLoadedOnce.current = false;
|
|
91
|
+
webViewRef.current?.reload();
|
|
92
|
+
},
|
|
78
93
|
}));
|
|
94
|
+
// Notify parent of loading state changes
|
|
95
|
+
(0, react_1.useEffect)(() => {
|
|
96
|
+
onLoadingChange?.(isLoading);
|
|
97
|
+
}, [isLoading, onLoadingChange]);
|
|
79
98
|
const checkWalletAvailability = async () => {
|
|
80
99
|
const available = await (0, walletUtils_1.isWalletAvailable)();
|
|
81
100
|
setWalletAvailable(available);
|
|
@@ -86,7 +105,7 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
86
105
|
const handleMessage = (event) => {
|
|
87
106
|
try {
|
|
88
107
|
const message = JSON.parse(event.nativeEvent.data);
|
|
89
|
-
|
|
108
|
+
log("Received message:", message.type);
|
|
90
109
|
switch (message.type) {
|
|
91
110
|
case "widget:ready":
|
|
92
111
|
handleReady();
|
|
@@ -94,9 +113,6 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
94
113
|
case "widget:open-wallet":
|
|
95
114
|
handleOpenWallet();
|
|
96
115
|
break;
|
|
97
|
-
case "widget:card-created":
|
|
98
|
-
handleCardCreated(message);
|
|
99
|
-
break;
|
|
100
116
|
case "widget:error":
|
|
101
117
|
handleError(message);
|
|
102
118
|
break;
|
|
@@ -107,23 +123,23 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
107
123
|
handleTransactionRequested(message);
|
|
108
124
|
break;
|
|
109
125
|
case "widget:token-expired":
|
|
110
|
-
|
|
126
|
+
logError("Access token expired");
|
|
111
127
|
onError?.("TOKEN_EXPIRED", "Access token has expired");
|
|
112
128
|
break;
|
|
113
|
-
case "widget:
|
|
114
|
-
|
|
129
|
+
case "widget:copy-to-clipboard":
|
|
130
|
+
handleCopyToClipboard(message);
|
|
115
131
|
break;
|
|
116
132
|
default:
|
|
117
|
-
|
|
133
|
+
logWarn("Unknown message type:", message);
|
|
118
134
|
}
|
|
119
135
|
}
|
|
120
136
|
catch (error) {
|
|
121
|
-
|
|
137
|
+
logError("Failed to parse message:", error);
|
|
122
138
|
onError?.("PARSE_ERROR", "Failed to parse widget message");
|
|
123
139
|
}
|
|
124
140
|
};
|
|
125
141
|
const handleReady = () => {
|
|
126
|
-
|
|
142
|
+
log("Widget ready");
|
|
127
143
|
onReady?.();
|
|
128
144
|
// Send platform info to widget
|
|
129
145
|
sendMessageToWidget({
|
|
@@ -135,7 +151,7 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
135
151
|
});
|
|
136
152
|
};
|
|
137
153
|
const handleOpenWallet = async () => {
|
|
138
|
-
|
|
154
|
+
log("Opening native wallet...");
|
|
139
155
|
const success = await (0, walletUtils_1.openNativeWallet)();
|
|
140
156
|
// Notify widget of result
|
|
141
157
|
sendMessageToWidget({
|
|
@@ -143,86 +159,53 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
143
159
|
payload: { success },
|
|
144
160
|
});
|
|
145
161
|
};
|
|
146
|
-
const handleCardCreated = (message) => {
|
|
147
|
-
if (message.type !== "widget:card-created")
|
|
148
|
-
return;
|
|
149
|
-
const { cardId, cardType, last4 } = message.payload;
|
|
150
|
-
console.log("[WidgetSDK] Card created:", cardId);
|
|
151
|
-
onCardCreated?.(cardId, cardType, last4);
|
|
152
|
-
};
|
|
153
162
|
const handleError = (message) => {
|
|
154
163
|
if (message.type !== "widget:error")
|
|
155
164
|
return;
|
|
156
165
|
const { code, message: errorMessage } = message.payload;
|
|
157
|
-
|
|
166
|
+
logError("Widget error:", code, errorMessage);
|
|
158
167
|
onError?.(code, errorMessage);
|
|
159
168
|
};
|
|
160
169
|
const handleClose = () => {
|
|
161
|
-
|
|
170
|
+
log("Widget closed");
|
|
162
171
|
onClose?.();
|
|
163
172
|
};
|
|
164
173
|
const handleTransactionRequested = (message) => {
|
|
165
174
|
if (message.type !== "widget:transaction-requested")
|
|
166
175
|
return;
|
|
167
176
|
const { token, cryptoAmount, depositAddress, depositAddressTag } = message.payload;
|
|
168
|
-
|
|
169
|
-
token,
|
|
177
|
+
log("Transaction requested:", {
|
|
178
|
+
token: token.symbol,
|
|
170
179
|
cryptoAmount,
|
|
171
180
|
depositAddress,
|
|
172
|
-
depositAddressTag,
|
|
173
181
|
});
|
|
174
182
|
onTransactionRequested?.(token, cryptoAmount, depositAddress, depositAddressTag);
|
|
175
183
|
};
|
|
176
184
|
/**
|
|
177
|
-
* Handle
|
|
178
|
-
*
|
|
179
|
-
* 2. Generate cryptographically linked sessionId + secretKey pair
|
|
180
|
-
* 3. Send credentials back to widget for API call and decryption
|
|
185
|
+
* Handle clipboard copy request from widget
|
|
186
|
+
* Copies text to device clipboard and sends result back to widget
|
|
181
187
|
*/
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
console.log("[WidgetSDK] Card details requested, initiating biometric auth...");
|
|
187
|
-
// Step 1: Authenticate with biometrics
|
|
188
|
-
const biometricResult = await (0, biometricUtils_1.authenticateWithBiometrics)("Authenticate to view card details");
|
|
189
|
-
if (!biometricResult.success) {
|
|
190
|
-
console.log("[WidgetSDK] Biometric auth failed:", biometricResult.error);
|
|
191
|
-
const failedMessage = {
|
|
192
|
-
type: "native:biometric-failed",
|
|
193
|
-
payload: {
|
|
194
|
-
reason: biometricResult.error?.reason || "failed",
|
|
195
|
-
message: biometricResult.error?.message,
|
|
196
|
-
},
|
|
197
|
-
};
|
|
198
|
-
sendMessageToWidget(failedMessage);
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
// Step 2: Generate session credentials
|
|
188
|
+
const handleCopyToClipboard = async (message) => {
|
|
189
|
+
const { text, label } = message.payload;
|
|
190
|
+
// Log only the label, never the actual text content (security)
|
|
191
|
+
log("Copy to clipboard requested:", label || "unlabeled");
|
|
202
192
|
try {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
type: "native:card-details-session",
|
|
209
|
-
payload: {
|
|
210
|
-
sessionId,
|
|
211
|
-
secretKey: secretKeyHex,
|
|
212
|
-
},
|
|
213
|
-
};
|
|
214
|
-
sendMessageToWidget(sessionMessage);
|
|
193
|
+
await Clipboard.setStringAsync(text);
|
|
194
|
+
sendMessageToWidget({
|
|
195
|
+
type: "native:clipboard-result",
|
|
196
|
+
payload: { success: true, label },
|
|
197
|
+
});
|
|
215
198
|
}
|
|
216
199
|
catch (error) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
type: "native:
|
|
200
|
+
logError("Clipboard copy failed:", error);
|
|
201
|
+
sendMessageToWidget({
|
|
202
|
+
type: "native:clipboard-result",
|
|
220
203
|
payload: {
|
|
221
|
-
|
|
222
|
-
|
|
204
|
+
success: false,
|
|
205
|
+
label,
|
|
206
|
+
error: "Clipboard operation failed",
|
|
223
207
|
},
|
|
224
|
-
};
|
|
225
|
-
sendMessageToWidget(failedMessage);
|
|
208
|
+
});
|
|
226
209
|
}
|
|
227
210
|
};
|
|
228
211
|
/**
|
|
@@ -246,7 +229,7 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
246
229
|
userWalletAddress: userWalletAddress,
|
|
247
230
|
});
|
|
248
231
|
const url = `${baseUrl}?${params.toString()}`;
|
|
249
|
-
|
|
232
|
+
log("Widget URL:", url.substring(0, 100) + "...");
|
|
250
233
|
return url;
|
|
251
234
|
}, [accessToken, userWalletAddress, environment]);
|
|
252
235
|
return (<react_native_1.View style={styles.container}>
|
|
@@ -257,7 +240,7 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
257
240
|
}
|
|
258
241
|
}} onError={(syntheticEvent) => {
|
|
259
242
|
const { nativeEvent } = syntheticEvent;
|
|
260
|
-
|
|
243
|
+
logError("WebView error:", nativeEvent);
|
|
261
244
|
setIsLoading(false);
|
|
262
245
|
onError?.("WEBVIEW_ERROR", "Failed to load widget");
|
|
263
246
|
}}
|
|
@@ -269,9 +252,9 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
269
252
|
url.includes("pay.google.com") || // Google Wallet
|
|
270
253
|
url.includes("wallet.google.com") ||
|
|
271
254
|
url.includes("wallet.apple.com")) {
|
|
272
|
-
|
|
255
|
+
log("Opening external URL:", url);
|
|
273
256
|
react_native_1.Linking.openURL(url).catch((err) => {
|
|
274
|
-
|
|
257
|
+
logError("Failed to open URL:", err);
|
|
275
258
|
});
|
|
276
259
|
return false; // Don't load in WebView
|
|
277
260
|
}
|
|
@@ -285,7 +268,7 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, e
|
|
|
285
268
|
// Android specific
|
|
286
269
|
mixedContentMode="always"/>
|
|
287
270
|
{isLoading && (<react_native_1.View style={styles.loadingOverlay}>
|
|
288
|
-
<react_native_1.ActivityIndicator size="large" color=
|
|
271
|
+
<react_native_1.ActivityIndicator size="large" color={loadingIndicatorColor}/>
|
|
289
272
|
</react_native_1.View>)}
|
|
290
273
|
</react_native_1.View>);
|
|
291
274
|
});
|
package/dist/WidgetSDK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetSDK.js","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAOe;AACf,+CAOsB;AACtB,+DAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"WidgetSDK.js","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
* Widget SDK - Public API
|
|
3
3
|
* Export all public components, types, and utilities
|
|
4
4
|
*/
|
|
5
|
-
export { WidgetSDK } from
|
|
6
|
-
export type { WidgetSDKRef } from
|
|
7
|
-
export type {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export type {
|
|
13
|
-
export { generateSessionCredentials, generateRandomHexKey, hexToBase64, } from './cryptoUtils';
|
|
14
|
-
export type { SessionCredentials } from './cryptoUtils';
|
|
5
|
+
export { WidgetSDK } from "./WidgetSDK";
|
|
6
|
+
export type { WidgetSDKRef } from "./WidgetSDK";
|
|
7
|
+
export type { BaseWidgetMessage, CopyToClipboardMessage, DepositToken, NativeBackPressedMessage, NativeBiometricFailedMessage, NativeCardDetailsSessionMessage, NativeMessage, NativeMessageType, NativeNavigateBackMessage, NativePlatformInfoMessage, NativeWalletOpenedMessage, OpenWalletMessage, RequestCardDetailsSessionMessage, TokenExpiredMessage, TransactionRequestedMessage, WidgetCloseMessage, WidgetEnvironment, WidgetErrorMessage, WidgetMessage, WidgetMessageType, WidgetReadyMessage, WidgetSDKConfig, SDKErrorCode, } from "./types";
|
|
8
|
+
export { getWidgetUrl, WIDGET_URLS } from "./config";
|
|
9
|
+
export { MessageTypes, WALLET_URLS } from "./types";
|
|
10
|
+
export { isWalletAvailable, openNativeWallet } from "./walletUtils";
|
|
11
|
+
export { generateRandomHexKey, generateSessionCredentials, hexToBase64, } from "./cryptoUtils";
|
|
12
|
+
export type { SessionCredentials } from "./cryptoUtils";
|
|
15
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,4BAA4B,EAC5B,+BAA+B,EAC/B,aAAa,EAEb,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,gCAAgC,EAChC,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EAEb,iBAAiB,EACjB,kBAAkB,EAElB,eAAe,EAEf,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,29 +4,23 @@
|
|
|
4
4
|
* Export all public components, types, and utilities
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.hexToBase64 = exports.
|
|
7
|
+
exports.hexToBase64 = exports.generateSessionCredentials = exports.generateRandomHexKey = exports.openNativeWallet = exports.isWalletAvailable = exports.WALLET_URLS = exports.MessageTypes = exports.WIDGET_URLS = exports.getWidgetUrl = exports.WidgetSDK = void 0;
|
|
8
8
|
var WidgetSDK_1 = require("./WidgetSDK");
|
|
9
9
|
Object.defineProperty(exports, "WidgetSDK", { enumerable: true, get: function () { return WidgetSDK_1.WidgetSDK; } });
|
|
10
10
|
// Export constants
|
|
11
|
-
var types_1 = require("./types");
|
|
12
|
-
Object.defineProperty(exports, "WALLET_URLS", { enumerable: true, get: function () { return types_1.WALLET_URLS; } });
|
|
13
|
-
Object.defineProperty(exports, "MessageTypes", { enumerable: true, get: function () { return types_1.MessageTypes; } });
|
|
14
11
|
var config_1 = require("./config");
|
|
15
|
-
Object.defineProperty(exports, "WIDGET_URLS", { enumerable: true, get: function () { return config_1.WIDGET_URLS; } });
|
|
16
12
|
Object.defineProperty(exports, "getWidgetUrl", { enumerable: true, get: function () { return config_1.getWidgetUrl; } });
|
|
13
|
+
Object.defineProperty(exports, "WIDGET_URLS", { enumerable: true, get: function () { return config_1.WIDGET_URLS; } });
|
|
14
|
+
var types_1 = require("./types");
|
|
15
|
+
Object.defineProperty(exports, "MessageTypes", { enumerable: true, get: function () { return types_1.MessageTypes; } });
|
|
16
|
+
Object.defineProperty(exports, "WALLET_URLS", { enumerable: true, get: function () { return types_1.WALLET_URLS; } });
|
|
17
17
|
// Export wallet utilities
|
|
18
18
|
var walletUtils_1 = require("./walletUtils");
|
|
19
|
-
Object.defineProperty(exports, "openNativeWallet", { enumerable: true, get: function () { return walletUtils_1.openNativeWallet; } });
|
|
20
19
|
Object.defineProperty(exports, "isWalletAvailable", { enumerable: true, get: function () { return walletUtils_1.isWalletAvailable; } });
|
|
21
|
-
|
|
22
|
-
var biometricUtils_1 = require("./biometricUtils");
|
|
23
|
-
Object.defineProperty(exports, "authenticateWithBiometrics", { enumerable: true, get: function () { return biometricUtils_1.authenticateWithBiometrics; } });
|
|
24
|
-
Object.defineProperty(exports, "isBiometricAvailable", { enumerable: true, get: function () { return biometricUtils_1.isBiometricAvailable; } });
|
|
25
|
-
Object.defineProperty(exports, "getBiometryTypeLabel", { enumerable: true, get: function () { return biometricUtils_1.getBiometryTypeLabel; } });
|
|
26
|
-
Object.defineProperty(exports, "AuthenticationType", { enumerable: true, get: function () { return biometricUtils_1.AuthenticationType; } });
|
|
20
|
+
Object.defineProperty(exports, "openNativeWallet", { enumerable: true, get: function () { return walletUtils_1.openNativeWallet; } });
|
|
27
21
|
// Export crypto utilities (for advanced usage)
|
|
28
22
|
var cryptoUtils_1 = require("./cryptoUtils");
|
|
29
|
-
Object.defineProperty(exports, "generateSessionCredentials", { enumerable: true, get: function () { return cryptoUtils_1.generateSessionCredentials; } });
|
|
30
23
|
Object.defineProperty(exports, "generateRandomHexKey", { enumerable: true, get: function () { return cryptoUtils_1.generateRandomHexKey; } });
|
|
24
|
+
Object.defineProperty(exports, "generateSessionCredentials", { enumerable: true, get: function () { return cryptoUtils_1.generateSessionCredentials; } });
|
|
31
25
|
Object.defineProperty(exports, "hexToBase64", { enumerable: true, get: function () { return cryptoUtils_1.hexToBase64; } });
|
|
32
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAkClB,mBAAmB;AACnB,mCAAqD;AAA5C,sGAAA,YAAY,OAAA;AAAE,qGAAA,WAAW,OAAA;AAClC,iCAAoD;AAA3C,qGAAA,YAAY,OAAA;AAAE,oGAAA,WAAW,OAAA;AAElC,0BAA0B;AAC1B,6CAAoE;AAA3D,gHAAA,iBAAiB,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAE5C,+CAA+C;AAC/C,6CAIuB;AAHrB,mHAAA,oBAAoB,OAAA;AACpB,yHAAA,0BAA0B,OAAA;AAC1B,0GAAA,WAAW,OAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,12 +12,12 @@ export interface DepositToken {
|
|
|
12
12
|
iconUrl: string | null;
|
|
13
13
|
networkName: string;
|
|
14
14
|
}
|
|
15
|
-
export type WidgetMessageType = "widget:ready" | "widget:open-wallet" | "widget:
|
|
15
|
+
export type WidgetMessageType = "widget:ready" | "widget:open-wallet" | "widget:error" | "widget:close" | "widget:transaction-requested" | "widget:token-expired" | "widget:request-card-details-session" | "widget:copy-to-clipboard";
|
|
16
16
|
/**
|
|
17
17
|
* Native Message Types
|
|
18
18
|
* Messages sent from the native app to the web widget
|
|
19
19
|
*/
|
|
20
|
-
export type NativeMessageType = "native:platform-info" | "native:wallet-opened" | "native:back-pressed" | "native:navigate-back" | "native:card-details-session" | "native:biometric-failed";
|
|
20
|
+
export type NativeMessageType = "native:platform-info" | "native:wallet-opened" | "native:back-pressed" | "native:navigate-back" | "native:card-details-session" | "native:biometric-failed" | "native:clipboard-result";
|
|
21
21
|
export interface NativeBackPressedMessage {
|
|
22
22
|
type: "native:back-pressed";
|
|
23
23
|
timestamp: number;
|
|
@@ -29,7 +29,7 @@ export interface NativeNavigateBackMessage {
|
|
|
29
29
|
export interface NativePlatformInfoMessage {
|
|
30
30
|
type: "native:platform-info";
|
|
31
31
|
payload: {
|
|
32
|
-
platform:
|
|
32
|
+
platform: "ios" | "android";
|
|
33
33
|
walletAvailable: boolean;
|
|
34
34
|
};
|
|
35
35
|
}
|
|
@@ -53,7 +53,15 @@ export interface NativeBiometricFailedMessage {
|
|
|
53
53
|
message?: string;
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
|
-
export
|
|
56
|
+
export interface NativeClipboardResultMessage {
|
|
57
|
+
type: "native:clipboard-result";
|
|
58
|
+
payload: {
|
|
59
|
+
success: boolean;
|
|
60
|
+
label?: string;
|
|
61
|
+
error?: string;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export type NativeMessage = NativeBackPressedMessage | NativeNavigateBackMessage | NativePlatformInfoMessage | NativeWalletOpenedMessage | NativeCardDetailsSessionMessage | NativeBiometricFailedMessage | NativeClipboardResultMessage;
|
|
57
65
|
export interface BaseWidgetMessage {
|
|
58
66
|
type: WidgetMessageType;
|
|
59
67
|
timestamp: number;
|
|
@@ -67,14 +75,6 @@ export interface OpenWalletMessage extends BaseWidgetMessage {
|
|
|
67
75
|
platform: "ios" | "android";
|
|
68
76
|
};
|
|
69
77
|
}
|
|
70
|
-
export interface CardCreatedMessage extends BaseWidgetMessage {
|
|
71
|
-
type: "widget:card-created";
|
|
72
|
-
payload: {
|
|
73
|
-
cardId: string;
|
|
74
|
-
cardType: "virtual" | "physical";
|
|
75
|
-
last4: string;
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
78
|
export interface WidgetErrorMessage extends BaseWidgetMessage {
|
|
79
79
|
type: "widget:error";
|
|
80
80
|
payload: {
|
|
@@ -106,13 +106,27 @@ export interface RequestCardDetailsSessionMessage extends BaseWidgetMessage {
|
|
|
106
106
|
publicKey: string;
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
|
-
export
|
|
109
|
+
export interface CopyToClipboardMessage extends BaseWidgetMessage {
|
|
110
|
+
type: "widget:copy-to-clipboard";
|
|
111
|
+
payload: {
|
|
112
|
+
text: string;
|
|
113
|
+
label?: string;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export type WidgetMessage = WidgetReadyMessage | OpenWalletMessage | WidgetErrorMessage | WidgetCloseMessage | TransactionRequestedMessage | TokenExpiredMessage | RequestCardDetailsSessionMessage | CopyToClipboardMessage;
|
|
110
117
|
/**
|
|
111
118
|
* Widget environment configuration
|
|
112
119
|
* - 'development': Uses development/staging widget URL
|
|
113
120
|
* - 'production': Uses production widget URL
|
|
114
121
|
*/
|
|
115
122
|
export type WidgetEnvironment = "development" | "production";
|
|
123
|
+
/**
|
|
124
|
+
* Known SDK error codes
|
|
125
|
+
* - TOKEN_EXPIRED: The access token has expired
|
|
126
|
+
* - PARSE_ERROR: Failed to parse a message from the widget
|
|
127
|
+
* - WEBVIEW_ERROR: The WebView failed to load
|
|
128
|
+
*/
|
|
129
|
+
export type SDKErrorCode = "TOKEN_EXPIRED" | "PARSE_ERROR" | "WEBVIEW_ERROR";
|
|
116
130
|
/**
|
|
117
131
|
* SDK Configuration
|
|
118
132
|
*/
|
|
@@ -126,11 +140,39 @@ export interface WidgetSDKConfig {
|
|
|
126
140
|
* @default 'production'
|
|
127
141
|
*/
|
|
128
142
|
environment?: WidgetEnvironment;
|
|
143
|
+
/**
|
|
144
|
+
* Called when the widget is ready and loaded
|
|
145
|
+
*/
|
|
129
146
|
onReady?: () => void;
|
|
130
|
-
|
|
131
|
-
|
|
147
|
+
/**
|
|
148
|
+
* Called when an error occurs
|
|
149
|
+
* @param code - Error code (SDKErrorCode or custom widget error code)
|
|
150
|
+
* @param message - Human-readable error message
|
|
151
|
+
*/
|
|
152
|
+
onError?: (code: SDKErrorCode | string, message: string) => void;
|
|
153
|
+
/**
|
|
154
|
+
* Called when the widget requests to close
|
|
155
|
+
*/
|
|
132
156
|
onClose?: () => void;
|
|
157
|
+
/**
|
|
158
|
+
* Called when a crypto transaction is requested
|
|
159
|
+
*/
|
|
133
160
|
onTransactionRequested?: (token: DepositToken, cryptoAmount: string, depositAddress: string, depositAddressTag: string | null) => void;
|
|
161
|
+
/**
|
|
162
|
+
* Called when the loading state changes
|
|
163
|
+
* @param isLoading - Whether the widget is currently loading
|
|
164
|
+
*/
|
|
165
|
+
onLoadingChange?: (isLoading: boolean) => void;
|
|
166
|
+
/**
|
|
167
|
+
* Enable debug logging to console
|
|
168
|
+
* @default false
|
|
169
|
+
*/
|
|
170
|
+
debug?: boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Custom color for the loading indicator
|
|
173
|
+
* @default "#007AFF"
|
|
174
|
+
*/
|
|
175
|
+
loadingIndicatorColor?: string;
|
|
134
176
|
}
|
|
135
177
|
/**
|
|
136
178
|
* Platform-specific wallet URLs
|
|
@@ -155,17 +197,18 @@ export declare const WALLET_URLS: {
|
|
|
155
197
|
export declare const MessageTypes: {
|
|
156
198
|
readonly READY: "widget:ready";
|
|
157
199
|
readonly OPEN_WALLET: "widget:open-wallet";
|
|
158
|
-
readonly CARD_CREATED: "widget:card-created";
|
|
159
200
|
readonly ERROR: "widget:error";
|
|
160
201
|
readonly CLOSE: "widget:close";
|
|
161
202
|
readonly TRANSACTION_REQUESTED: "widget:transaction-requested";
|
|
162
203
|
readonly TOKEN_EXPIRED: "widget:token-expired";
|
|
163
204
|
readonly REQUEST_CARD_DETAILS_SESSION: "widget:request-card-details-session";
|
|
205
|
+
readonly COPY_TO_CLIPBOARD: "widget:copy-to-clipboard";
|
|
164
206
|
readonly PLATFORM_INFO: "native:platform-info";
|
|
165
207
|
readonly WALLET_OPENED: "native:wallet-opened";
|
|
166
208
|
readonly BACK_PRESSED: "native:back-pressed";
|
|
167
209
|
readonly NAVIGATE_BACK: "native:navigate-back";
|
|
168
210
|
readonly CARD_DETAILS_SESSION: "native:card-details-session";
|
|
169
211
|
readonly BIOMETRIC_FAILED: "native:biometric-failed";
|
|
212
|
+
readonly CLIPBOARD_RESULT: "native:clipboard-result";
|
|
170
213
|
};
|
|
171
214
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GACzB,cAAc,GACd,oBAAoB,GACpB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -29,12 +29,12 @@ exports.MessageTypes = {
|
|
|
29
29
|
// Widget → Native
|
|
30
30
|
READY: "widget:ready",
|
|
31
31
|
OPEN_WALLET: "widget:open-wallet",
|
|
32
|
-
CARD_CREATED: "widget:card-created",
|
|
33
32
|
ERROR: "widget:error",
|
|
34
33
|
CLOSE: "widget:close",
|
|
35
34
|
TRANSACTION_REQUESTED: "widget:transaction-requested",
|
|
36
35
|
TOKEN_EXPIRED: "widget:token-expired",
|
|
37
36
|
REQUEST_CARD_DETAILS_SESSION: "widget:request-card-details-session",
|
|
37
|
+
COPY_TO_CLIPBOARD: "widget:copy-to-clipboard",
|
|
38
38
|
// Native → Widget
|
|
39
39
|
PLATFORM_INFO: "native:platform-info",
|
|
40
40
|
WALLET_OPENED: "native:wallet-opened",
|
|
@@ -42,5 +42,6 @@ exports.MessageTypes = {
|
|
|
42
42
|
NAVIGATE_BACK: "native:navigate-back",
|
|
43
43
|
CARD_DETAILS_SESSION: "native:card-details-session",
|
|
44
44
|
BIOMETRIC_FAILED: "native:biometric-failed",
|
|
45
|
+
CLIPBOARD_RESULT: "native:clipboard-result",
|
|
45
46
|
};
|
|
46
47
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAyOH;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,GAAG,EAAE;QACH,OAAO,EAAE,YAAY,EAAE,yBAAyB;QAChD,QAAQ,EAAE,0BAA0B;KACrC;IACD,OAAO,EAAE;QACP,SAAS,EAAE,yCAAyC;QACpD,QAAQ,EAAE,2BAA2B;KACtC;CACO,CAAC;AAEX;;;;;;GAMG;AACU,QAAA,YAAY,GAAG;IAC1B,kBAAkB;IAClB,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,oBAAoB;IACjC,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,cAAc;IACrB,qBAAqB,EAAE,8BAA8B;IACrD,aAAa,EAAE,sBAAsB;IACrC,4BAA4B,EAAE,qCAAqC;IACnE,iBAAiB,EAAE,0BAA0B;IAC7C,kBAAkB;IAClB,aAAa,EAAE,sBAAsB;IACrC,aAAa,EAAE,sBAAsB;IACrC,YAAY,EAAE,qBAAqB;IACnC,aAAa,EAAE,sBAAsB;IACrC,oBAAoB,EAAE,6BAA6B;IACnD,gBAAgB,EAAE,yBAAyB;IAC3C,gBAAgB,EAAE,yBAAyB;CACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oobit/react-native-sdk",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "React Native SDK for integrating Oobit crypto payments into wallet apps",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"url": "git+https://github.com/oobit-tech/react-native-SDK.git"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
+
"expo-clipboard": ">=5.0.0",
|
|
42
43
|
"expo-intent-launcher": ">=6.0.0",
|
|
43
44
|
"expo-linking": ">=6.0.0",
|
|
44
45
|
"expo-local-authentication": ">=14.0.0",
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"@typescript-eslint/eslint-plugin": "^8.47.0",
|
|
56
57
|
"@typescript-eslint/parser": "^8.47.0",
|
|
57
58
|
"eslint": "^9.39.1",
|
|
59
|
+
"expo-clipboard": "~8.0.8",
|
|
58
60
|
"expo-intent-launcher": "~13.0.7",
|
|
59
61
|
"expo-linking": "~8.0.8",
|
|
60
62
|
"expo-local-authentication": "~15.0.2",
|