signer-test-sdk-react 0.0.21 → 0.0.23

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.
Files changed (93) hide show
  1. package/dist/src/AbstraxnProvider.d.ts +5 -13
  2. package/dist/src/AbstraxnProvider.js +14 -3126
  3. package/dist/src/AbstraxnProvider.js.map +1 -1
  4. package/dist/src/ConnectButton.css +1 -1
  5. package/dist/src/ExternalWalletButtons.css +1 -1
  6. package/dist/src/ExternalWalletButtons.js +2 -2
  7. package/dist/src/ExternalWalletButtons.js.map +1 -1
  8. package/dist/src/WalletModal.css +193 -373
  9. package/dist/src/WalletModal.d.ts +1 -1
  10. package/dist/src/WalletModal.js +108 -45
  11. package/dist/src/WalletModal.js.map +1 -1
  12. package/dist/src/chains.d.ts +4 -3
  13. package/dist/src/chains.js +154 -84
  14. package/dist/src/chains.js.map +1 -1
  15. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.d.ts +12 -0
  16. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js +146 -0
  17. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js.map +1 -0
  18. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.d.ts +25 -0
  19. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js +3086 -0
  20. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js.map +1 -0
  21. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.d.ts +8 -0
  22. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js +46 -0
  23. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js.map +1 -0
  24. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.d.ts +8 -0
  25. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js +12 -0
  26. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js.map +1 -0
  27. package/dist/src/components/AbstraxnProvider/context.d.ts +2 -0
  28. package/dist/src/components/AbstraxnProvider/context.js +6 -0
  29. package/dist/src/components/AbstraxnProvider/context.js.map +1 -0
  30. package/dist/src/components/AbstraxnProvider/index.d.ts +6 -0
  31. package/dist/src/components/AbstraxnProvider/index.js +7 -0
  32. package/dist/src/components/AbstraxnProvider/index.js.map +1 -0
  33. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.d.ts +30 -0
  34. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js +49 -0
  35. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js.map +1 -0
  36. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.d.ts +2 -0
  37. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js +13 -0
  38. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js.map +1 -0
  39. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.d.ts +22 -0
  40. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js +242 -0
  41. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js.map +1 -0
  42. package/dist/src/components/AbstraxnProvider/useWalletInitialization.d.ts +25 -0
  43. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js +539 -0
  44. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js.map +1 -0
  45. package/dist/src/components/AbstraxnProvider/utils.d.ts +41 -0
  46. package/dist/src/components/AbstraxnProvider/utils.js +139 -0
  47. package/dist/src/components/AbstraxnProvider/utils.js.map +1 -0
  48. package/dist/src/components/OnboardingUI/OnboardingUI.css +8 -5
  49. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js +6 -0
  50. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js.map +1 -1
  51. package/dist/src/components/WalletModal/components/ChainSelector.css +249 -102
  52. package/dist/src/components/WalletModal/components/ChainSelector.d.ts +7 -6
  53. package/dist/src/components/WalletModal/components/ChainSelector.js +68 -27
  54. package/dist/src/components/WalletModal/components/ChainSelector.js.map +1 -1
  55. package/dist/src/components/WalletModal/components/ExportKeyModal.css +89 -88
  56. package/dist/src/components/WalletModal/components/ExportKeyModal.d.ts +6 -1
  57. package/dist/src/components/WalletModal/components/ExportKeyModal.js +6 -11
  58. package/dist/src/components/WalletModal/components/ExportKeyModal.js.map +1 -1
  59. package/dist/src/components/WalletModal/components/ExportWarningModal.css +107 -2
  60. package/dist/src/components/WalletModal/components/ExportWarningModal.d.ts +7 -1
  61. package/dist/src/components/WalletModal/components/ExportWarningModal.js +5 -3
  62. package/dist/src/components/WalletModal/components/ExportWarningModal.js.map +1 -1
  63. package/dist/src/components/WalletModal/components/ManageWalletModal.css +90 -4
  64. package/dist/src/components/WalletModal/components/ManageWalletModal.d.ts +3 -3
  65. package/dist/src/components/WalletModal/components/ManageWalletModal.js +28 -13
  66. package/dist/src/components/WalletModal/components/ManageWalletModal.js.map +1 -1
  67. package/dist/src/components/WalletModal/components/PreviewTransactionModal.css +3 -4
  68. package/dist/src/components/WalletModal/components/ReceiveModal.css +93 -58
  69. package/dist/src/components/WalletModal/components/ReceiveModal.js +1 -1
  70. package/dist/src/components/WalletModal/components/ReceiveModal.js.map +1 -1
  71. package/dist/src/components/WalletModal/components/SendModal.css +170 -127
  72. package/dist/src/components/WalletModal/components/SendModal.d.ts +4 -6
  73. package/dist/src/components/WalletModal/components/SendModal.js +131 -39
  74. package/dist/src/components/WalletModal/components/SendModal.js.map +1 -1
  75. package/dist/src/components/WalletModal/components/SuccessModal.css +7 -8
  76. package/dist/src/components/WalletModal/components/TokenSelectorModal.css +240 -0
  77. package/dist/src/components/WalletModal/components/TokenSelectorModal.d.ts +21 -0
  78. package/dist/src/components/WalletModal/components/TokenSelectorModal.js +44 -0
  79. package/dist/src/components/WalletModal/components/TokenSelectorModal.js.map +1 -0
  80. package/dist/src/components/WalletModal/components/index.d.ts +2 -0
  81. package/dist/src/components/WalletModal/components/index.js +1 -0
  82. package/dist/src/components/WalletModal/components/index.js.map +1 -1
  83. package/dist/src/hooks.d.ts +4712 -789
  84. package/dist/src/hooks.js +182 -147
  85. package/dist/src/hooks.js.map +1 -1
  86. package/dist/src/index.d.ts +1 -1
  87. package/dist/src/index.js +1 -1
  88. package/dist/src/index.js.map +1 -1
  89. package/dist/src/wagmiConfig.d.ts +1 -1
  90. package/dist/src/wagmiConfig.js +33 -20
  91. package/dist/src/wagmiConfig.js.map +1 -1
  92. package/dist/tsconfig.tsbuildinfo +1 -1
  93. package/package.json +1 -1
@@ -0,0 +1,539 @@
1
+ /**
2
+ * Wallet initialization hook
3
+ * Handles wallet instance creation, event listeners, and OnboardingUI setup
4
+ */
5
+ import { useEffect } from "react";
6
+ import { AbstraxnWallet } from "signer-test-sdk-core";
7
+ import { OnboardingUIWeb } from "../OnboardingUI";
8
+ import { EVM_CHAINS, toCoreChain } from "../../chains";
9
+ import { hasAuthParams } from "./utils";
10
+ export function useWalletInitialization({ config, walletRef, onboardingRef, otpIdRef, externalWalletsEnabled, setIsConnected, setAddress, setUser, setWhoami, setChainId, setError, setConnectionType, init, }) {
11
+ useEffect(() => {
12
+ // If wallet already exists (from previous mount), reuse it to prevent flicker
13
+ if (walletRef.current) {
14
+ return;
15
+ }
16
+ // Compute supported chains from chain config (outside useMemo since we're in useEffect)
17
+ // This should include ALL chains that might be shown in the UI (availableChains)
18
+ // We use the same logic as availableChains to ensure consistency
19
+ let computedSupportedChains = undefined;
20
+ if (config.supportedChains) {
21
+ // Use explicitly provided chains
22
+ computedSupportedChains = config.supportedChains;
23
+ }
24
+ else {
25
+ // Compute from chains config - use same logic as availableChains
26
+ const chainConfig = config.chains;
27
+ const chains = [];
28
+ // Priority 1: Check if chains is an array of viem chain objects (direct format)
29
+ if (Array.isArray(chainConfig) && chainConfig?.length > 0) {
30
+ const firstItem = chainConfig[0];
31
+ if (firstItem &&
32
+ typeof firstItem.id === "number" &&
33
+ firstItem.nativeCurrency) {
34
+ // Convert viem chain objects to core chain format
35
+ chainConfig.forEach((viemChain) => {
36
+ let rpcUrl = "";
37
+ if (viemChain.rpcUrls?.default?.http) {
38
+ rpcUrl = Array.isArray(viemChain.rpcUrls.default.http)
39
+ ? viemChain.rpcUrls.default.http[0]
40
+ : viemChain.rpcUrls.default.http;
41
+ }
42
+ else if (viemChain.rpcUrls?.public?.http) {
43
+ rpcUrl = Array.isArray(viemChain.rpcUrls.public.http)
44
+ ? viemChain.rpcUrls.public.http[0]
45
+ : viemChain.rpcUrls.public.http;
46
+ }
47
+ chains.push({
48
+ id: viemChain.id,
49
+ name: viemChain.name,
50
+ rpcUrl: rpcUrl ||
51
+ `https://rpc.ankr.com/${viemChain.name.toLowerCase()}`,
52
+ nativeCurrency: viemChain.nativeCurrency,
53
+ });
54
+ });
55
+ }
56
+ }
57
+ // Priority 2: Check new chains config format
58
+ else if (chainConfig?.supportedEvmChains &&
59
+ chainConfig.supportedEvmChains.length > 0) {
60
+ chainConfig.supportedEvmChains.forEach((chainName) => {
61
+ const chainData = EVM_CHAINS[chainName];
62
+ if (chainData && chainData.type === "evm") {
63
+ chains.push(toCoreChain(chainData));
64
+ }
65
+ });
66
+ }
67
+ // Priority 3: If no specific config, include default chains that might be shown
68
+ // This ensures Base and other common chains are available even if not explicitly configured
69
+ if (chains.length === 0) {
70
+ // Include common chains that are likely to be in availableChains
71
+ chains.push(toCoreChain(EVM_CHAINS.ethereum));
72
+ chains.push(toCoreChain(EVM_CHAINS.polygon));
73
+ chains.push(toCoreChain(EVM_CHAINS.base));
74
+ }
75
+ computedSupportedChains =
76
+ chains.length > 0
77
+ ? chains
78
+ : [
79
+ toCoreChain(EVM_CHAINS.ethereum),
80
+ toCoreChain(EVM_CHAINS.polygon),
81
+ toCoreChain(EVM_CHAINS.base),
82
+ ];
83
+ }
84
+ const walletInstance = new AbstraxnWallet({
85
+ apiKey: config.apiKey,
86
+ authMethods: config.authMethods,
87
+ googleClientId: config.googleClientId,
88
+ defaultChainId: config.chains?.defaultChainId || config.defaultChainId,
89
+ supportedChains: computedSupportedChains,
90
+ autoConnect: config.autoConnect ?? false,
91
+ enableLogging: config.enableLogging ?? false,
92
+ });
93
+ walletRef.current = walletInstance;
94
+ // Set up event listeners
95
+ walletInstance.on("connect", async () => {
96
+ try {
97
+ // Verify whoami exists before setting connected
98
+ const whoamiInfo = await walletInstance.getWhoami();
99
+ if (!whoamiInfo) {
100
+ // If whoami is not available, don't set connected
101
+ return;
102
+ }
103
+ setIsConnected(true);
104
+ const userInfo = await walletInstance.getUserInfo();
105
+ setUser(userInfo);
106
+ setWhoami(whoamiInfo);
107
+ // Try to get address, but don't fail if not available yet
108
+ try {
109
+ const addr = await walletInstance.getAddress();
110
+ setAddress(addr);
111
+ }
112
+ catch (addrErr) {
113
+ console.warn("Address not available on connect:", addrErr);
114
+ }
115
+ const cid = await walletInstance.getChainId();
116
+ setChainId(cid);
117
+ // Always restore connection type from localStorage on connect
118
+ // This ensures connectionType is available after OAuth redirects (Google, X, Discord)
119
+ // and after page refreshes
120
+ try {
121
+ const storedType = localStorage.getItem("abstraxn_connection_type");
122
+ if (storedType &&
123
+ (storedType === "google" ||
124
+ storedType === "email" ||
125
+ storedType === "discord" ||
126
+ storedType === "x" ||
127
+ storedType === "passkey")) {
128
+ setConnectionType(storedType);
129
+ }
130
+ }
131
+ catch (e) {
132
+ // Ignore localStorage errors
133
+ }
134
+ }
135
+ catch (err) {
136
+ console.error("Error getting wallet info on connect:", err);
137
+ }
138
+ // Ensure loading modal is closed when connected (whoami received)
139
+ if (onboardingRef.current) {
140
+ const onboardingAny = onboardingRef.current;
141
+ if (onboardingAny.hideLoadingModal) {
142
+ onboardingAny.hideLoadingModal();
143
+ }
144
+ // Also ensure the overlay is hidden if it was opened
145
+ if (onboardingAny.modalOverlay &&
146
+ onboardingAny.modalOverlay.classList.contains("onboarding-modal-open")) {
147
+ onboardingAny.modalOverlay.classList.remove("onboarding-modal-open");
148
+ onboardingAny.modalOverlay.classList.add("onboarding-modal-closing");
149
+ setTimeout(() => {
150
+ if (onboardingAny.modalOverlay) {
151
+ onboardingAny.modalOverlay.style.display = "none";
152
+ }
153
+ }, 200);
154
+ document.body.style.overflow = "";
155
+ }
156
+ }
157
+ });
158
+ walletInstance.on("disconnect", () => {
159
+ setIsConnected(false);
160
+ setAddress(null);
161
+ setUser(null);
162
+ setWhoami(null);
163
+ setChainId(null);
164
+ setConnectionType(null);
165
+ // Clear from localStorage
166
+ try {
167
+ localStorage.removeItem("abstraxn_connection_type");
168
+ }
169
+ catch (e) {
170
+ // Ignore localStorage errors
171
+ }
172
+ });
173
+ walletInstance.on("accountChanged", (newAddress) => {
174
+ setAddress(newAddress);
175
+ });
176
+ walletInstance.on("chainChanged", (newChainId) => {
177
+ setChainId(newChainId);
178
+ });
179
+ // Initialize OnboardingUI only if not already created (prevents flicker on config change)
180
+ if (onboardingRef.current) {
181
+ return;
182
+ }
183
+ const uiConfig = config.ui || {};
184
+ const onboarding = new OnboardingUIWeb({
185
+ logo: uiConfig.logo,
186
+ theme: uiConfig.theme || "light",
187
+ showFooter: uiConfig.showFooter !== false,
188
+ onboardTitle: uiConfig.onboardTitle || "Sign In",
189
+ modal: uiConfig.modal !== false,
190
+ closeOnBackdropClick: uiConfig.closeOnBackdropClick !== false,
191
+ className: uiConfig.className,
192
+ style: uiConfig.style,
193
+ labels: uiConfig.labels,
194
+ colors: uiConfig.colors,
195
+ customCSS: uiConfig.customCSS,
196
+ authMethods: uiConfig.authMethods || config.authMethods,
197
+ onEmailOtpInitiate: async (email) => {
198
+ try {
199
+ if (!walletInstance)
200
+ throw new Error("Wallet not initialized");
201
+ const authManager = walletInstance.getAuthManager();
202
+ const connectionTypeValue = "email";
203
+ setConnectionType(connectionTypeValue);
204
+ try {
205
+ localStorage.setItem("abstraxn_connection_type", connectionTypeValue);
206
+ }
207
+ catch (e) {
208
+ // Ignore localStorage errors
209
+ }
210
+ const result = await authManager.loginWithOTP(email);
211
+ otpIdRef.current = result.otpId;
212
+ }
213
+ catch (err) {
214
+ console.error("OTP Init Error:", err);
215
+ throw err;
216
+ }
217
+ },
218
+ onEmailOtpVerify: async (_email, otp) => {
219
+ try {
220
+ if (!walletInstance)
221
+ throw new Error("Wallet not initialized");
222
+ if (!otpIdRef.current)
223
+ throw new Error("OTP ID not found");
224
+ // Set connection type for email OTP before verification
225
+ const connectionTypeValue = "email";
226
+ setConnectionType(connectionTypeValue);
227
+ try {
228
+ localStorage.setItem("abstraxn_connection_type", connectionTypeValue);
229
+ }
230
+ catch (e) {
231
+ // Ignore localStorage errors
232
+ }
233
+ const authManager = walletInstance.getAuthManager();
234
+ const user = await authManager.verifyOTP(otpIdRef.current, otp);
235
+ otpIdRef.current = null;
236
+ // Connect wallet after successful authentication
237
+ await walletInstance.connect();
238
+ // Clear any previous errors on successful verification
239
+ setError(null);
240
+ return { success: true, user };
241
+ }
242
+ catch (err) {
243
+ console.error("OTP Verify Error:", err);
244
+ // Return the actual error message from the API
245
+ const errorMessage = err instanceof Error ? err.message : "Failed to verify OTP";
246
+ return { success: false, error: errorMessage };
247
+ }
248
+ },
249
+ onGoogleLogin: async () => {
250
+ if (!walletInstance)
251
+ throw new Error("Wallet not initialized");
252
+ const connectionTypeValue = "google";
253
+ setConnectionType(connectionTypeValue);
254
+ // Store in localStorage for restoration
255
+ try {
256
+ localStorage.setItem("abstraxn_connection_type", connectionTypeValue);
257
+ localStorage.setItem("abstraxn_oauth_pending", "google");
258
+ }
259
+ catch (e) {
260
+ // Ignore localStorage errors
261
+ }
262
+ // Clear existing query params before starting new flow
263
+ if (typeof window !== "undefined") {
264
+ const url = new URL(window.location.href);
265
+ // Remove auth params that might be present from previous attempts
266
+ url.searchParams.delete("code");
267
+ url.searchParams.delete("state");
268
+ url.searchParams.delete("error");
269
+ url.searchParams.delete("success");
270
+ url.searchParams.delete("accessToken");
271
+ url.searchParams.delete("provider");
272
+ url.searchParams.delete("authProvider");
273
+ window.history.replaceState({}, document.title, url.toString());
274
+ }
275
+ const authManager = walletInstance.getAuthManager();
276
+ await authManager.loginWithGoogle();
277
+ },
278
+ onTwitterLogin: async () => {
279
+ if (!walletInstance)
280
+ throw new Error("Wallet not initialized");
281
+ const connectionTypeValue = "x";
282
+ setConnectionType(connectionTypeValue);
283
+ try {
284
+ localStorage.setItem("abstraxn_connection_type", connectionTypeValue);
285
+ localStorage.setItem("abstraxn_oauth_pending", "twitter");
286
+ }
287
+ catch (e) {
288
+ // Ignore localStorage errors
289
+ }
290
+ // Clear existing query params before starting new flow
291
+ if (typeof window !== "undefined") {
292
+ const url = new URL(window.location.href);
293
+ // Remove auth params that might be present from previous attempts
294
+ url.searchParams.delete("code");
295
+ url.searchParams.delete("state");
296
+ url.searchParams.delete("error");
297
+ url.searchParams.delete("success");
298
+ url.searchParams.delete("accessToken");
299
+ url.searchParams.delete("provider");
300
+ url.searchParams.delete("authProvider");
301
+ window.history.replaceState({}, document.title, url.toString());
302
+ }
303
+ const authManager = walletInstance.getAuthManager();
304
+ await authManager.loginWithTwitter();
305
+ },
306
+ onDiscordLogin: async () => {
307
+ if (!walletInstance)
308
+ throw new Error("Wallet not initialized");
309
+ const connectionTypeValue = "discord";
310
+ setConnectionType(connectionTypeValue);
311
+ try {
312
+ localStorage.setItem("abstraxn_connection_type", connectionTypeValue);
313
+ localStorage.setItem("abstraxn_oauth_pending", "discord");
314
+ }
315
+ catch (e) {
316
+ // Ignore localStorage errors
317
+ }
318
+ // Clear existing query params before starting new flow
319
+ if (typeof window !== "undefined") {
320
+ const url = new URL(window.location.href);
321
+ // Remove auth params that might be present from previous attempts
322
+ url.searchParams.delete("code");
323
+ url.searchParams.delete("state");
324
+ url.searchParams.delete("error");
325
+ url.searchParams.delete("success");
326
+ url.searchParams.delete("accessToken");
327
+ url.searchParams.delete("provider");
328
+ url.searchParams.delete("authProvider");
329
+ window.history.replaceState({}, document.title, url.toString());
330
+ }
331
+ const authManager = walletInstance.getAuthManager();
332
+ await authManager.loginWithDiscord();
333
+ },
334
+ onPasskeyLogin: async () => {
335
+ if (!walletInstance)
336
+ throw new Error("Wallet not initialized");
337
+ const connectionTypeValue = "passkey";
338
+ setConnectionType(connectionTypeValue);
339
+ try {
340
+ localStorage.setItem("abstraxn_connection_type", connectionTypeValue);
341
+ }
342
+ catch (e) {
343
+ // Ignore localStorage errors
344
+ }
345
+ const authManager = walletInstance.getAuthManager();
346
+ const user = await authManager.loginWithPasskey();
347
+ // Set user immediately so onLoginSuccess can access it
348
+ setUser(user);
349
+ // Connect wallet after successful authentication
350
+ await walletInstance.connect();
351
+ },
352
+ onPasskeySignup: async () => {
353
+ if (!walletInstance)
354
+ throw new Error("Wallet not initialized");
355
+ const connectionTypeValue = "passkey";
356
+ setConnectionType(connectionTypeValue);
357
+ try {
358
+ localStorage.setItem("abstraxn_connection_type", connectionTypeValue);
359
+ }
360
+ catch (e) {
361
+ // Ignore localStorage errors
362
+ }
363
+ const authManager = walletInstance.getAuthManager();
364
+ const user = await authManager.signupWithPasskey();
365
+ // Clear any previous errors on successful verification
366
+ // setError(null);
367
+ setUser(user);
368
+ // Connect wallet after successful authentication
369
+ await walletInstance.connect();
370
+ },
371
+ onLoginSuccess: async (_data) => {
372
+ // Clear any previous errors on successful login
373
+ setError(null);
374
+ // Restore connection type from localStorage for OAuth logins (Google, X, Discord)
375
+ // This ensures connectionType is set after OAuth redirects
376
+ try {
377
+ const storedType = localStorage.getItem("abstraxn_connection_type");
378
+ if (storedType &&
379
+ (storedType === "google" ||
380
+ storedType === "x" ||
381
+ storedType === "discord" ||
382
+ storedType === "email" ||
383
+ storedType === "passkey")) {
384
+ setConnectionType(storedType);
385
+ }
386
+ }
387
+ catch (e) {
388
+ // Ignore localStorage errors
389
+ }
390
+ // Load whoami after successful login
391
+ if (walletInstance) {
392
+ try {
393
+ const whoamiInfo = await walletInstance.getWhoami();
394
+ setWhoami(whoamiInfo);
395
+ const addr = await walletInstance.getAddress();
396
+ setAddress(addr);
397
+ const cid = await walletInstance.getChainId();
398
+ setChainId(cid);
399
+ // Only hide onboarding UI and set connected if whoami succeeds
400
+ if (onboardingRef.current) {
401
+ const onboardingAny = onboardingRef.current;
402
+ if (onboardingAny.hideLoadingModal) {
403
+ onboardingAny.hideLoadingModal();
404
+ }
405
+ if (onboardingAny.modalOverlay) {
406
+ onboardingAny.modalOverlay.classList.remove("onboarding-modal-open");
407
+ onboardingAny.modalOverlay.classList.add("onboarding-modal-closing");
408
+ setTimeout(() => {
409
+ if (onboardingAny.modalOverlay) {
410
+ onboardingAny.modalOverlay.style.display = "none";
411
+ }
412
+ }, 200);
413
+ }
414
+ document.body.style.overflow = "";
415
+ }
416
+ // Set connected state only after whoami succeeds
417
+ setIsConnected(true);
418
+ }
419
+ catch (err) {
420
+ console.error("Error loading whoami after login:", err);
421
+ // Hide loading modal on whoami error
422
+ if (onboardingRef.current) {
423
+ const onboardingAny = onboardingRef.current;
424
+ if (onboardingAny.hideLoadingModal) {
425
+ onboardingAny.hideLoadingModal();
426
+ }
427
+ // Show error modal/screen
428
+ const errorMessage = err instanceof Error
429
+ ? err.message
430
+ : "Failed to load user information";
431
+ if (onboardingAny.showError) {
432
+ onboardingAny.showError(errorMessage);
433
+ }
434
+ }
435
+ // Set error state
436
+ const error = err instanceof Error
437
+ ? err
438
+ : new Error("Failed to load user information after login");
439
+ setError(error);
440
+ // Don't set connected if whoami fails
441
+ setIsConnected(false);
442
+ }
443
+ }
444
+ },
445
+ onLoginError: (err) => {
446
+ setError(err);
447
+ },
448
+ }, externalWalletsEnabled); // Pass externalWalletsEnabled as second parameter
449
+ // Inject custom CSS if provided
450
+ if (uiConfig.customCSS) {
451
+ const styleId = "abstraxn-custom-css";
452
+ if (!document.getElementById(styleId)) {
453
+ const style = document.createElement("style");
454
+ style.id = styleId;
455
+ style.textContent = uiConfig.customCSS;
456
+ document.head.appendChild(style);
457
+ }
458
+ }
459
+ try {
460
+ onboarding.init();
461
+ }
462
+ catch (err) {
463
+ console.error("Failed to initialize OnboardingUI:", err);
464
+ }
465
+ // Check if we should keep it open (if handling a callback)
466
+ const urlParams = new URLSearchParams(window.location.search);
467
+ const shouldKeepOpen = hasAuthParams(urlParams);
468
+ const hasSuccess = urlParams.get("success") === "true";
469
+ // Hide immediately - use synchronous approach to prevent flicker
470
+ // Only hide if NOT handling a callback
471
+ const onboardingAny = onboarding;
472
+ if (!shouldKeepOpen && onboardingAny.modalOverlay) {
473
+ // Hide immediately without delay to prevent flicker
474
+ onboardingAny.modalOverlay.classList.remove("onboarding-modal-open");
475
+ onboardingAny.modalOverlay.style.display = "none";
476
+ document.body.style.overflow = "";
477
+ }
478
+ else if (hasSuccess) {
479
+ // If success=true is in URL, show loading modal
480
+ // Use setTimeout to ensure onboarding is fully initialized
481
+ setTimeout(() => {
482
+ const onboardingInstance = onboardingRef.current;
483
+ if (onboardingInstance && onboardingInstance.showLoadingModal) {
484
+ // Directly show loading modal - it creates its own overlay with header and footer
485
+ onboardingInstance.showLoadingModal();
486
+ }
487
+ }, 150);
488
+ }
489
+ onboardingRef.current = onboarding;
490
+ // Helper function to restore connection state
491
+ const restoreConnectionState = async (wallet) => {
492
+ try {
493
+ // Verify whoami exists before setting connected
494
+ const whoamiInfo = await wallet.getWhoami();
495
+ if (!whoamiInfo) {
496
+ // If whoami is not available, don't set connected
497
+ return;
498
+ }
499
+ setIsConnected(true);
500
+ const userInfo = await wallet.getUserInfo();
501
+ setUser(userInfo);
502
+ setWhoami(whoamiInfo);
503
+ // Try to get address, but don't fail if not available yet
504
+ try {
505
+ const addr = await wallet.getAddress();
506
+ setAddress(addr);
507
+ }
508
+ catch (addrErr) {
509
+ console.warn("Address not available during restore:", addrErr);
510
+ }
511
+ const cid = await wallet.getChainId();
512
+ setChainId(cid);
513
+ }
514
+ catch (err) {
515
+ console.error("Error restoring connection state:", err);
516
+ // If restore fails, mark as disconnected
517
+ setIsConnected(false);
518
+ }
519
+ };
520
+ // Auto-initialize if enabled
521
+ if (config.autoInit !== false) {
522
+ init().then(() => {
523
+ // After initialization, check if wallet is already connected (from localStorage)
524
+ // The wallet's initialize() method already sets isConnected if authenticated
525
+ // But we need to restore React state if the event was missed
526
+ if (walletInstance && walletInstance.isConnected) {
527
+ // Wallet is already connected, restore state
528
+ restoreConnectionState(walletInstance);
529
+ }
530
+ });
531
+ }
532
+ return () => {
533
+ if (onboardingRef.current) {
534
+ onboardingRef.current.destroy();
535
+ }
536
+ };
537
+ }, []); // Only run once on mount
538
+ }
539
+ //# sourceMappingURL=useWalletInitialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletInitialization.js","sourceRoot":"","sources":["../../../../src/components/AbstraxnProvider/useWalletInitialization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Utility functions for AbstraxnProvider
3
+ */
4
+ import React, { type ReactNode } from "react";
5
+ import { QueryClient } from "@tanstack/react-query";
6
+ /**
7
+ * Check if React Query is available and can be used safely
8
+ * This is a simple check - we can't fully verify React is properly set up
9
+ * without trying to use it, but we can check if the dependencies exist
10
+ */
11
+ export declare function canUseReactQuery(): {
12
+ canUse: boolean;
13
+ reason?: string;
14
+ };
15
+ /**
16
+ * Wrapper component that conditionally uses QueryClientProvider
17
+ * Falls back to rendering children directly if React Query is not available
18
+ */
19
+ export declare function QueryClientWrapper({ children, queryClient, }: {
20
+ children: ReactNode;
21
+ queryClient: QueryClient;
22
+ }): React.FunctionComponentElement<React.FragmentProps> | React.FunctionComponentElement<import("@tanstack/react-query").QueryClientProviderProps>;
23
+ /**
24
+ * Hook to create QueryClient
25
+ * Creates a QueryClient instance that's only created once per component instance
26
+ * Since @tanstack/react-query is now only in peerDependencies, the app's instance will be used
27
+ * This prevents multiple instances of the package from being bundled
28
+ */
29
+ export declare function useQueryClientSafe(): QueryClient;
30
+ /**
31
+ * Check if URL has auth parameters
32
+ */
33
+ export declare function hasAuthParams(params: URLSearchParams): boolean;
34
+ /**
35
+ * Extract auth provider from JWT token
36
+ */
37
+ export declare function getAuthProviderFromToken(token: string): string | null;
38
+ /**
39
+ * Check if URL params match a specific OAuth provider
40
+ */
41
+ export declare function matchesProvider(provider: "google" | "twitter" | "discord", params: URLSearchParams): boolean;