@n1xyz/wallet-widget 0.0.33-alpha.3 → 0.0.33

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 (139) hide show
  1. package/dist/animations/N1Loader.js +8 -14
  2. package/dist/animations/N1Loader.js.map +1 -1
  3. package/dist/animations/Processing.js +8 -14
  4. package/dist/animations/Processing.js.map +1 -1
  5. package/dist/components/LoadingFallback.js +2 -6
  6. package/dist/components/LoadingFallback.js.map +1 -1
  7. package/dist/components/Logo.js +22 -25
  8. package/dist/components/Logo.js.map +1 -1
  9. package/dist/components/N1ConnectButton.js +12 -18
  10. package/dist/components/N1ConnectButton.js.map +1 -1
  11. package/dist/components/logos/ArbitrumLogo.js +3 -7
  12. package/dist/components/logos/ArbitrumLogo.js.map +1 -1
  13. package/dist/components/logos/BaseLogo.js +3 -7
  14. package/dist/components/logos/BaseLogo.js.map +1 -1
  15. package/dist/components/logos/BeraLogo.js +3 -7
  16. package/dist/components/logos/BeraLogo.js.map +1 -1
  17. package/dist/components/logos/BitcoinLogo.js +3 -7
  18. package/dist/components/logos/BitcoinLogo.js.map +1 -1
  19. package/dist/components/logos/EthereumLogo.js +3 -7
  20. package/dist/components/logos/EthereumLogo.js.map +1 -1
  21. package/dist/components/logos/HyperliquidLogo.js +3 -7
  22. package/dist/components/logos/HyperliquidLogo.js.map +1 -1
  23. package/dist/components/logos/OptimismLogo.js +3 -7
  24. package/dist/components/logos/OptimismLogo.js.map +1 -1
  25. package/dist/components/logos/SolanaLogo.js +3 -7
  26. package/dist/components/logos/SolanaLogo.js.map +1 -1
  27. package/dist/components/logos/ZeroOneLogo.js +3 -7
  28. package/dist/components/logos/ZeroOneLogo.js.map +1 -1
  29. package/dist/components/logos/index.js +9 -25
  30. package/dist/components/logos/index.js.map +1 -1
  31. package/dist/config/solana.js +3 -7
  32. package/dist/config/solana.js.map +1 -1
  33. package/dist/config.js +2 -5
  34. package/dist/config.js.map +1 -1
  35. package/dist/context/n1-wallet-context.js +4 -8
  36. package/dist/context/n1-wallet-context.js.map +1 -1
  37. package/dist/errors/types.js +3 -6
  38. package/dist/errors/types.js.map +1 -1
  39. package/dist/features/onboarding-flow/N1WalletModal.js +23 -59
  40. package/dist/features/onboarding-flow/N1WalletModal.js.map +1 -1
  41. package/dist/features/onboarding-flow/OnboardingFlow.js +46 -50
  42. package/dist/features/onboarding-flow/OnboardingFlow.js.map +1 -1
  43. package/dist/features/onboarding-flow/components/ChainButton.js +4 -7
  44. package/dist/features/onboarding-flow/components/ChainButton.js.map +1 -1
  45. package/dist/features/onboarding-flow/components/Header.js +11 -15
  46. package/dist/features/onboarding-flow/components/Header.js.map +1 -1
  47. package/dist/features/onboarding-flow/components/ImageWithFallback.js +6 -10
  48. package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -1
  49. package/dist/features/onboarding-flow/components/TransactionTable.js +10 -13
  50. package/dist/features/onboarding-flow/components/TransactionTable.js.map +1 -1
  51. package/dist/features/onboarding-flow/components/WaitingMessage.js +8 -14
  52. package/dist/features/onboarding-flow/components/WaitingMessage.js.map +1 -1
  53. package/dist/features/onboarding-flow/components/index.js +5 -21
  54. package/dist/features/onboarding-flow/components/index.js.map +1 -1
  55. package/dist/features/onboarding-flow/index.js +1 -5
  56. package/dist/features/onboarding-flow/index.js.map +1 -1
  57. package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +55 -60
  58. package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -1
  59. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +43 -48
  60. package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -1
  61. package/dist/features/onboarding-flow/providers/StateProvider.js +7 -11
  62. package/dist/features/onboarding-flow/providers/StateProvider.js.map +1 -1
  63. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +69 -74
  64. package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -1
  65. package/dist/features/onboarding-flow/providers/debug.js +18 -21
  66. package/dist/features/onboarding-flow/providers/debug.js.map +1 -1
  67. package/dist/features/onboarding-flow/providers/index.js +5 -16
  68. package/dist/features/onboarding-flow/providers/index.js.map +1 -1
  69. package/dist/features/onboarding-flow/providers/onboardingStateMachine.js +15 -20
  70. package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -1
  71. package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js +8 -11
  72. package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -1
  73. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js +34 -38
  74. package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +1 -1
  75. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +47 -51
  76. package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +1 -1
  77. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +8 -12
  78. package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +1 -1
  79. package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js +25 -28
  80. package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +1 -1
  81. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js +10 -13
  82. package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +1 -1
  83. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +7 -10
  84. package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +1 -1
  85. package/dist/features/onboarding-flow/screens/index.js +7 -23
  86. package/dist/features/onboarding-flow/screens/index.js.map +1 -1
  87. package/dist/features/onboarding-flow/types.js +3 -6
  88. package/dist/features/onboarding-flow/types.js.map +1 -1
  89. package/dist/features/onboarding-flow/utils/depositStorage.js +3 -8
  90. package/dist/features/onboarding-flow/utils/depositStorage.js.map +1 -1
  91. package/dist/features/onboarding-flow/utils/imageUtils.js +3 -9
  92. package/dist/features/onboarding-flow/utils/imageUtils.js.map +1 -1
  93. package/dist/features/onboarding-flow/utils/nordUser.js +2 -38
  94. package/dist/features/onboarding-flow/utils/nordUser.js.map +1 -1
  95. package/dist/features/onboarding-flow/utils/nordUtils.js +5 -12
  96. package/dist/features/onboarding-flow/utils/nordUtils.js.map +1 -1
  97. package/dist/features/onboarding-flow/utils/session.js +14 -17
  98. package/dist/features/onboarding-flow/utils/session.js.map +1 -1
  99. package/dist/features/onboarding-flow/utils/transaction.js +1 -4
  100. package/dist/features/onboarding-flow/utils/transaction.js.map +1 -1
  101. package/dist/features/onboarding-flow/utils/utils.js +8 -16
  102. package/dist/features/onboarding-flow/utils/utils.js.map +1 -1
  103. package/dist/features/onboarding-flow/utils/withImageFallback.js +9 -15
  104. package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -1
  105. package/dist/hooks/index.js +2 -18
  106. package/dist/hooks/index.js.map +1 -1
  107. package/dist/hooks/useN1Wallet.js +6 -10
  108. package/dist/hooks/useN1Wallet.js.map +1 -1
  109. package/dist/hooks/useNordUserInitialization.js +31 -34
  110. package/dist/hooks/useNordUserInitialization.js.map +1 -1
  111. package/dist/index.js +7 -21
  112. package/dist/index.js.map +1 -1
  113. package/dist/main.css +2 -0
  114. package/dist/polyfills/windowEthereumGuard.js +1 -2
  115. package/dist/polyfills/windowEthereumGuard.js.map +1 -1
  116. package/dist/providers/LazyWalletProvider.js +38 -74
  117. package/dist/providers/LazyWalletProvider.js.map +1 -1
  118. package/dist/providers/N1WalletProvider.js +70 -109
  119. package/dist/providers/N1WalletProvider.js.map +1 -1
  120. package/dist/providers/ShadowRootWrapper.js +4 -10
  121. package/dist/providers/ShadowRootWrapper.js.map +1 -1
  122. package/dist/providers/WalletErrorBoundary.js +6 -11
  123. package/dist/providers/WalletErrorBoundary.js.map +1 -1
  124. package/dist/styles/embedded-main-css.js +1 -3
  125. package/dist/styles/embedded-main-css.js.map +1 -1
  126. package/dist/styles/main.css +1 -1
  127. package/dist/types/wallet.js +4 -7
  128. package/dist/types/wallet.js.map +1 -1
  129. package/dist/utils/ed25519.js +14 -20
  130. package/dist/utils/ed25519.js.map +1 -1
  131. package/dist/utils/getPseudoName.js +7 -10
  132. package/dist/utils/getPseudoName.js.map +1 -1
  133. package/dist/utils/logger.js +3 -5
  134. package/dist/utils/logger.js.map +1 -1
  135. package/dist/utils/shortenString.js +2 -6
  136. package/dist/utils/shortenString.js.map +1 -1
  137. package/dist/utils/words.js +1 -4
  138. package/dist/utils/words.js.map +1 -1
  139. package/package.json +3 -3
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -35,38 +34,36 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
34
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
35
  }
37
36
  };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.useWalletConnection = exports.WalletConnectionProvider = exports.FLOW_STATE_STORAGE_KEY = void 0;
40
- var jsx_runtime_1 = require("react/jsx-runtime");
41
- var react_1 = require("react");
42
- var hooks_1 = require("../../../hooks");
43
- var logger_1 = require("../../../utils/logger");
44
- var types_1 = require("../types");
45
- var OnboardingStateProvider_1 = require("./OnboardingStateProvider");
46
- var depositStorage_1 = require("../utils/depositStorage");
47
- var wallet_1 = require("../../../types/wallet");
48
- var utils_1 = require("../utils/utils");
49
- exports.FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';
37
+ import { jsx as _jsx } from "react/jsx-runtime";
38
+ import { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
39
+ import { useN1WalletContext, useN1WalletInternalContext } from '../../../hooks';
40
+ import { logger } from '../../../utils/logger';
41
+ import { OnboardingStep, initialOnboardingContext } from '../types';
42
+ import { useOnboardingState } from './OnboardingStateProvider';
43
+ import { clearLastDepositRecord, readLastDepositRecord } from '../utils/depositStorage';
44
+ import { N1ModalViewMode } from '../../../types/wallet';
45
+ import { removeKeysFromLocalStorage } from '../utils/utils';
46
+ export var FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';
50
47
  // Create the context with a default value
51
- var WalletConnectionContext = (0, react_1.createContext)(undefined);
48
+ var WalletConnectionContext = createContext(undefined);
52
49
  /**
53
50
  * Provider component for the wallet connection context
54
51
  */
55
- var WalletConnectionProvider = function (_a) {
52
+ export var WalletConnectionProvider = function (_a) {
56
53
  var children = _a.children;
57
- var _b = (0, hooks_1.useN1WalletContext)(), nord = _b.nord, nordUser = _b.nordUser, address = _b.address, setShowLogin = _b.setShowLogin, showLogin = _b.showLogin;
58
- var _c = (0, hooks_1.useN1WalletInternalContext)(), showDynamicWidget = _c.showDynamicWidget, dynamicWallet = _c.dynamicWallet, setIsConnected = _c.setIsConnected, dynamicSdkHasLoaded = _c.dynamicSdkHasLoaded, dynamicHandleLogOut = _c.dynamicHandleLogOut, setAddress = _c.setAddress, setBalances = _c.setBalances, setChain = _c.setChain, setDynamicWallet = _c.setDynamicWallet, setSessionPubKey = _c.setSessionPubKey, setSignMessageWithSessionKey = _c.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _c.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _c.setSignTransactionWithWalletKey, setNordUser = _c.setNordUser, setViewMode = _c.setViewMode, setWalletPubKey = _c.setWalletPubKey, setUsername = _c.setUsername, setUserChain = _c.setUserChain, setStartClosingLogin = _c.setStartClosingLogin, setDisconnectWalletHandler = _c.setDisconnectWalletHandler;
54
+ var _b = useN1WalletContext(), nord = _b.nord, nordUser = _b.nordUser, address = _b.address, setShowLogin = _b.setShowLogin, showLogin = _b.showLogin;
55
+ var _c = useN1WalletInternalContext(), showDynamicWidget = _c.showDynamicWidget, dynamicWallet = _c.dynamicWallet, setIsConnected = _c.setIsConnected, dynamicSdkHasLoaded = _c.dynamicSdkHasLoaded, dynamicHandleLogOut = _c.dynamicHandleLogOut, setAddress = _c.setAddress, setBalances = _c.setBalances, setChain = _c.setChain, setDynamicWallet = _c.setDynamicWallet, setSessionPubKey = _c.setSessionPubKey, setSignMessageWithSessionKey = _c.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _c.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _c.setSignTransactionWithWalletKey, setNordUser = _c.setNordUser, setViewMode = _c.setViewMode, setWalletPubKey = _c.setWalletPubKey, setUsername = _c.setUsername, setUserChain = _c.setUserChain, setStartClosingLogin = _c.setStartClosingLogin, setDisconnectWalletHandler = _c.setDisconnectWalletHandler;
59
56
  // Get flow context
60
- var _d = (0, OnboardingStateProvider_1.useOnboardingState)(), state = _d.state, context = _d.context, flowActions = _d.actions, updateContext = _d.updateContext;
61
- var _e = (0, react_1.useState)(false), isConnecting = _e[0], setIsConnecting = _e[1];
62
- var dynamicWidgetRequestedRef = (0, react_1.useRef)(false);
57
+ var _d = useOnboardingState(), state = _d.state, context = _d.context, flowActions = _d.actions, updateContext = _d.updateContext;
58
+ var _e = useState(false), isConnecting = _e[0], setIsConnecting = _e[1];
59
+ var dynamicWidgetRequestedRef = useRef(false);
63
60
  // Use refs to track previous values
64
- var processedWalletAddressRef = (0, react_1.useRef)(null);
65
- var prevNordUserRef = (0, react_1.useRef)(nordUser);
66
- var prevSessionIdRef = (0, react_1.useRef)((nordUser === null || nordUser === void 0 ? void 0 : nordUser.sessionId) ? nordUser.sessionId.toString() : null);
67
- var prevStateRef = (0, react_1.useRef)(state);
68
- var reportedNordClientErrorRef = (0, react_1.useRef)(false);
69
- var clearWalletCache = (0, react_1.useCallback)(function () {
61
+ var processedWalletAddressRef = useRef(null);
62
+ var prevNordUserRef = useRef(nordUser);
63
+ var prevSessionIdRef = useRef((nordUser === null || nordUser === void 0 ? void 0 : nordUser.sessionId) ? nordUser.sessionId.toString() : null);
64
+ var prevStateRef = useRef(state);
65
+ var reportedNordClientErrorRef = useRef(false);
66
+ var clearWalletCache = useCallback(function () {
70
67
  if (typeof window === 'undefined') {
71
68
  return;
72
69
  }
@@ -74,18 +71,18 @@ var WalletConnectionProvider = function (_a) {
74
71
  if (address) {
75
72
  var sessionIdKey = "n1_sessionId_".concat(address);
76
73
  window.localStorage.removeItem(sessionIdKey);
77
- (0, utils_1.removeKeysFromLocalStorage)(address);
74
+ removeKeysFromLocalStorage(address);
78
75
  }
79
- window.localStorage.removeItem(exports.FLOW_STATE_STORAGE_KEY);
80
- (0, depositStorage_1.clearLastDepositRecord)(address);
81
- updateContext(types_1.initialOnboardingContext);
82
- logger_1.logger.debug('Cleared wallet cache for address', { address: address });
76
+ window.localStorage.removeItem(FLOW_STATE_STORAGE_KEY);
77
+ clearLastDepositRecord(address);
78
+ updateContext(initialOnboardingContext);
79
+ logger.debug('Cleared wallet cache for address', { address: address });
83
80
  }
84
81
  catch (error) {
85
- logger_1.logger.warn('Failed to clear wallet cache', error);
82
+ logger.warn('Failed to clear wallet cache', error);
86
83
  }
87
84
  }, [address, updateContext]);
88
- var closeDynamicWidget = (0, react_1.useCallback)(function () {
85
+ var closeDynamicWidget = useCallback(function () {
89
86
  if (!dynamicWidgetRequestedRef.current) {
90
87
  return;
91
88
  }
@@ -94,7 +91,7 @@ var WalletConnectionProvider = function (_a) {
94
91
  showDynamicWidget(false);
95
92
  }
96
93
  catch (error) {
97
- logger_1.logger.warn('Failed to close Dynamic widget', error);
94
+ logger.warn('Failed to close Dynamic widget', error);
98
95
  }
99
96
  }
100
97
  dynamicWidgetRequestedRef.current = false;
@@ -102,15 +99,15 @@ var WalletConnectionProvider = function (_a) {
102
99
  /**
103
100
  * Disconnect wallet
104
101
  */
105
- var disconnectWallet = (0, react_1.useCallback)(function () {
106
- logger_1.logger.debug('Disconnecting wallet');
102
+ var disconnectWallet = useCallback(function () {
103
+ logger.debug('Disconnecting wallet');
107
104
  try {
108
105
  clearWalletCache();
109
106
  dynamicHandleLogOut === null || dynamicHandleLogOut === void 0 ? void 0 : dynamicHandleLogOut();
110
107
  closeDynamicWidget();
111
108
  }
112
109
  catch (error) {
113
- logger_1.logger.warn('Error during wallet disconnect', error);
110
+ logger.warn('Error during wallet disconnect', error);
114
111
  }
115
112
  processedWalletAddressRef.current = null;
116
113
  setIsConnected(false);
@@ -126,7 +123,7 @@ var WalletConnectionProvider = function (_a) {
126
123
  setUserChain(null);
127
124
  setUsername('');
128
125
  setNordUser(null);
129
- setViewMode(wallet_1.N1ModalViewMode.Automatic);
126
+ setViewMode(N1ModalViewMode.Automatic);
130
127
  setShowLogin(false);
131
128
  setStartClosingLogin(false);
132
129
  flowActions.resetFlow();
@@ -152,18 +149,18 @@ var WalletConnectionProvider = function (_a) {
152
149
  setWalletPubKey,
153
150
  flowActions,
154
151
  ]);
155
- (0, react_1.useEffect)(function () {
152
+ useEffect(function () {
156
153
  setDisconnectWalletHandler(function () { return disconnectWallet; });
157
154
  }, [disconnectWallet, setDisconnectWalletHandler]);
158
- (0, react_1.useEffect)(function () {
159
- if (state === types_1.OnboardingStep.CONNECTING_WALLET) {
155
+ useEffect(function () {
156
+ if (state === OnboardingStep.CONNECTING_WALLET) {
160
157
  processedWalletAddressRef.current = null;
161
158
  }
162
159
  }, [state]);
163
160
  /**
164
161
  * Connect wallet using Dynamic widget
165
162
  */
166
- var connectWallet = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
163
+ var connectWallet = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
167
164
  var error_1;
168
165
  return __generator(this, function (_a) {
169
166
  switch (_a.label) {
@@ -171,11 +168,11 @@ var WalletConnectionProvider = function (_a) {
171
168
  if (isConnecting || !showDynamicWidget || !dynamicSdkHasLoaded)
172
169
  return [2 /*return*/];
173
170
  if (dynamicWallet) {
174
- logger_1.logger.debug('Dynamic wallet already available; skipping widget open');
171
+ logger.debug('Dynamic wallet already available; skipping widget open');
175
172
  return [2 /*return*/];
176
173
  }
177
174
  setIsConnecting(true);
178
- logger_1.logger.debug('Starting wallet connection process');
175
+ logger.debug('Starting wallet connection process');
179
176
  _a.label = 1;
180
177
  case 1:
181
178
  _a.trys.push([1, 3, , 4]);
@@ -183,19 +180,19 @@ var WalletConnectionProvider = function (_a) {
183
180
  return [4 /*yield*/, showDynamicWidget(true)];
184
181
  case 2:
185
182
  _a.sent();
186
- logger_1.logger.debug('Dynamic widget shown');
183
+ logger.debug('Dynamic widget shown');
187
184
  return [3 /*break*/, 4];
188
185
  case 3:
189
186
  error_1 = _a.sent();
190
187
  dynamicWidgetRequestedRef.current = false;
191
188
  setIsConnecting(false);
192
- logger_1.logger.error('Error showing Dynamic widget:', error_1);
189
+ logger.error('Error showing Dynamic widget:', error_1);
193
190
  return [3 /*break*/, 4];
194
191
  case 4: return [2 /*return*/];
195
192
  }
196
193
  });
197
194
  }); }, [isConnecting, showDynamicWidget, dynamicSdkHasLoaded, dynamicWallet]);
198
- (0, react_1.useEffect)(function () {
195
+ useEffect(function () {
199
196
  if (!dynamicSdkHasLoaded) {
200
197
  return;
201
198
  }
@@ -216,7 +213,7 @@ var WalletConnectionProvider = function (_a) {
216
213
  flowActions.setErrorState(new Error('The client could not be initialized. Verify your Nord environment variables and try again.'));
217
214
  }, [dynamicSdkHasLoaded, nord, flowActions]);
218
215
  // Process nordUser changes
219
- (0, react_1.useEffect)(function () {
216
+ useEffect(function () {
220
217
  var _a;
221
218
  if (!dynamicSdkHasLoaded || !nordUser || !dynamicWallet)
222
219
  return;
@@ -240,7 +237,7 @@ var WalletConnectionProvider = function (_a) {
240
237
  }
241
238
  // Only run if we have processed a wallet
242
239
  if (dynamicWallet) {
243
- logger_1.logger.debug('NordUser changed, checking account status');
240
+ logger.debug('NordUser changed, checking account status');
244
241
  (function () { return __awaiter(void 0, void 0, void 0, function () {
245
242
  var nordAccount, hasNordAccount, sessionId, sessionIdString, serverSessions, sessionMatchesServer, sessionIdKey, hasActiveSession, lastDepositRecord, transitionDestination, error_2;
246
243
  var _a;
@@ -260,25 +257,25 @@ var WalletConnectionProvider = function (_a) {
260
257
  serverSessions = (_a = nordAccount === null || nordAccount === void 0 ? void 0 : nordAccount.sessions) !== null && _a !== void 0 ? _a : {};
261
258
  sessionMatchesServer = sessionIdString != null && Boolean(serverSessions === null || serverSessions === void 0 ? void 0 : serverSessions[sessionIdString]);
262
259
  if (sessionIdString && !sessionMatchesServer) {
263
- logger_1.logger.debug('Stored session is missing on Nord; clearing cached session ID');
260
+ logger.debug('Stored session is missing on Nord; clearing cached session ID');
264
261
  if (typeof window !== 'undefined') {
265
262
  try {
266
263
  sessionIdKey = "n1_sessionId_".concat(dynamicWallet.address);
267
264
  window.localStorage.removeItem(sessionIdKey);
268
265
  }
269
266
  catch (storageError) {
270
- logger_1.logger.warn('Failed to clear stale sessionId from localStorage', storageError);
267
+ logger.warn('Failed to clear stale sessionId from localStorage', storageError);
271
268
  }
272
269
  }
273
270
  }
274
271
  hasActiveSession = sessionMatchesServer;
275
272
  updateContext({ hasNordAccount: hasNordAccount, hasActiveSession: hasActiveSession });
276
- if (state === types_1.OnboardingStep.CONNECTING_WALLET &&
273
+ if (state === OnboardingStep.CONNECTING_WALLET &&
277
274
  !context.isDepositOnlyFlow) {
278
275
  try {
279
- lastDepositRecord = (0, depositStorage_1.readLastDepositRecord)(dynamicWallet.address);
276
+ lastDepositRecord = readLastDepositRecord(dynamicWallet.address);
280
277
  if (lastDepositRecord) {
281
- logger_1.logger.debug('Resuming last deposit from local storage');
278
+ logger.debug('Resuming last deposit from local storage');
282
279
  flowActions.markDepositSuccess({
283
280
  transactionId: lastDepositRecord.transactionId,
284
281
  record: lastDepositRecord,
@@ -289,37 +286,37 @@ var WalletConnectionProvider = function (_a) {
289
286
  }
290
287
  }
291
288
  catch (error) {
292
- logger_1.logger.error('Error restoring last deposit record:', error);
289
+ logger.error('Error restoring last deposit record:', error);
293
290
  }
294
291
  }
295
292
  transitionDestination = hasNordAccount
296
293
  ? hasActiveSession
297
- ? types_1.OnboardingStep.FINAL_SUCCESS
298
- : types_1.OnboardingStep.AUTH_LOADING
299
- : types_1.OnboardingStep.CHAIN_SELECTION;
294
+ ? OnboardingStep.FINAL_SUCCESS
295
+ : OnboardingStep.AUTH_LOADING
296
+ : OnboardingStep.CHAIN_SELECTION;
300
297
  if (hasNordAccount && hasActiveSession) {
301
298
  setIsConnected(true);
302
299
  }
303
300
  closeDynamicWidget();
304
301
  // Transition immediately without setTimeout
305
302
  try {
306
- logger_1.logger.debug('Attempting transition to ' + transitionDestination);
307
- if (transitionDestination === types_1.OnboardingStep.FINAL_SUCCESS) {
303
+ logger.debug('Attempting transition to ' + transitionDestination);
304
+ if (transitionDestination === OnboardingStep.FINAL_SUCCESS) {
308
305
  flowActions.completeFlow({
309
306
  hasNordAccount: hasNordAccount,
310
307
  hasActiveSession: hasActiveSession,
311
308
  });
312
309
  }
313
- else if (transitionDestination === types_1.OnboardingStep.AUTH_LOADING) {
310
+ else if (transitionDestination === OnboardingStep.AUTH_LOADING) {
314
311
  flowActions.requireAuth({ hasNordAccount: hasNordAccount });
315
312
  }
316
313
  else {
317
314
  flowActions.goToChainSelection();
318
315
  }
319
- logger_1.logger.debug('Transition to ' + transitionDestination + ' completed');
316
+ logger.debug('Transition to ' + transitionDestination + ' completed');
320
317
  }
321
318
  catch (error) {
322
- logger_1.logger.error('Error during transition:', error);
319
+ logger.error('Error during transition:', error);
323
320
  }
324
321
  finally {
325
322
  setIsConnecting(false);
@@ -327,7 +324,7 @@ var WalletConnectionProvider = function (_a) {
327
324
  return [3 /*break*/, 3];
328
325
  case 2:
329
326
  error_2 = _b.sent();
330
- logger_1.logger.error('Error checking account status:', error_2);
327
+ logger.error('Error checking account status:', error_2);
331
328
  closeDynamicWidget();
332
329
  setIsConnecting(false);
333
330
  return [3 /*break*/, 3];
@@ -350,23 +347,23 @@ var WalletConnectionProvider = function (_a) {
350
347
  closeDynamicWidget,
351
348
  ]);
352
349
  // Handle Dynamic widget closing while still connecting
353
- (0, react_1.useEffect)(function () {
354
- if (!isConnecting || state !== types_1.OnboardingStep.CONNECTING_WALLET) {
350
+ useEffect(function () {
351
+ if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {
355
352
  return;
356
353
  }
357
354
  if (!showLogin) {
358
- logger_1.logger.debug('Wallet modal closed before connection completed; resetting state');
355
+ logger.debug('Wallet modal closed before connection completed; resetting state');
359
356
  closeDynamicWidget();
360
357
  setIsConnecting(false);
361
358
  }
362
359
  }, [isConnecting, showLogin, state, closeDynamicWidget]);
363
360
  // Handle connecting state changes in a separate effect
364
- (0, react_1.useEffect)(function () {
361
+ useEffect(function () {
365
362
  var currentState = state;
366
363
  var prevState = prevStateRef.current;
367
364
  // Only run if state has changed
368
365
  if (currentState !== prevState) {
369
- if (currentState !== types_1.OnboardingStep.CONNECTING_WALLET && isConnecting) {
366
+ if (currentState !== OnboardingStep.CONNECTING_WALLET && isConnecting) {
370
367
  // If we're no longer in the connecting state, reset the connecting flag
371
368
  setIsConnecting(false);
372
369
  }
@@ -380,20 +377,18 @@ var WalletConnectionProvider = function (_a) {
380
377
  connectWallet: connectWallet,
381
378
  disconnectWallet: disconnectWallet,
382
379
  };
383
- return ((0, jsx_runtime_1.jsx)(WalletConnectionContext.Provider, { value: contextValue, children: children }));
380
+ return (_jsx(WalletConnectionContext.Provider, { value: contextValue, children: children }));
384
381
  };
385
- exports.WalletConnectionProvider = WalletConnectionProvider;
386
382
  /**
387
383
  * Custom hook to use the wallet connection context
388
384
  * @returns The wallet connection context value
389
385
  * @throws Error if used outside of a WalletConnectionProvider
390
386
  */
391
- var useWalletConnection = function () {
392
- var context = (0, react_1.useContext)(WalletConnectionContext);
387
+ export var useWalletConnection = function () {
388
+ var context = useContext(WalletConnectionContext);
393
389
  if (context === undefined) {
394
390
  throw new Error('useWalletConnection must be used within a WalletConnectionProvider');
395
391
  }
396
392
  return context;
397
393
  };
398
- exports.useWalletConnection = useWalletConnection;
399
394
  //# sourceMappingURL=WalletConnectionProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletConnectionProvider.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/WalletConnectionProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAmG;AACnG,wCAAgF;AAChF,gDAA+C;AAC/C,kCAAoE;AACpE,qEAA+D;AAC/D,0DAAwF;AACxF,gDAAwD;AACxD,wCAA4D;AAE/C,QAAA,sBAAsB,GAAG,iCAAiC,CAAC;AAQxE,0CAA0C;AAC1C,IAAM,uBAAuB,GAAG,IAAA,qBAAa,EAA2C,SAAS,CAAC,CAAC;AAOnG;;GAEG;AACI,IAAM,wBAAwB,GAA4C,UAAC,EAEjF;QADC,QAAQ,cAAA;IAEF,IAAA,KAAuD,IAAA,0BAAkB,GAAE,EAAzE,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,OAAO,aAAA,EAAE,YAAY,kBAAA,EAAE,SAAS,eAAyB,CAAC;IAC5E,IAAA,KAqBF,IAAA,kCAA0B,GAAE,EApB9B,iBAAiB,uBAAA,EACjB,aAAa,mBAAA,EACb,cAAc,oBAAA,EACd,mBAAmB,yBAAA,EACnB,mBAAmB,yBAAA,EACnB,UAAU,gBAAA,EACV,WAAW,iBAAA,EACX,QAAQ,cAAA,EACR,gBAAgB,sBAAA,EAChB,gBAAgB,sBAAA,EAChB,4BAA4B,kCAAA,EAC5B,2BAA2B,iCAAA,EAC3B,+BAA+B,qCAAA,EAC/B,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,eAAe,qBAAA,EACf,WAAW,iBAAA,EACX,YAAY,kBAAA,EACZ,oBAAoB,0BAAA,EACpB,0BAA0B,gCACI,CAAC;IAEjC,mBAAmB;IACb,IAAA,KAKF,IAAA,4CAAkB,GAAE,EAJtB,KAAK,WAAA,EACL,OAAO,aAAA,EACE,WAAW,aAAA,EACpB,aAAa,mBACS,CAAC;IAEnB,IAAA,KAAkC,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IACxD,IAAM,yBAAyB,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAEhD,oCAAoC;IACpC,IAAM,yBAAyB,GAAG,IAAA,cAAM,EAAgB,IAAI,CAAC,CAAC;IAC9D,IAAM,eAAe,GAAG,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC;IACzC,IAAM,gBAAgB,GAAG,IAAA,cAAM,EAC7B,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,EAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3D,CAAC;IACF,IAAM,YAAY,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IACnC,IAAM,0BAA0B,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAGjD,IAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC;QACnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAM,YAAY,GAAG,uBAAgB,OAAO,CAAE,CAAC;gBAC/C,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAC7C,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,8BAAsB,CAAC,CAAC;YACvD,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAC;YAChC,aAAa,CAAC,gCAAwB,CAAC,CAAC;YACxC,eAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAE7B,IAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC;QACrC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,yBAAyB,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5C,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB;;OAEG;IACH,IAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC;QACnC,eAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,gBAAgB,EAAE,CAAC;YACnB,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,EAAI,CAAC;YACxB,kBAAkB,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;QACzC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,UAAU,CAAC,EAAE,CAAC,CAAC;QACf,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACnC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAClC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QACtC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,wBAAe,CAAC,SAAS,CAAC,CAAC;QACvC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,WAAW,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC,EAAE;QACD,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,UAAU;QACV,WAAW;QACX,QAAQ;QACR,gBAAgB;QAChB,cAAc;QACd,WAAW;QACX,gBAAgB;QAChB,YAAY;QACZ,4BAA4B;QAC5B,2BAA2B;QAC3B,+BAA+B;QAC/B,oBAAoB;QACpB,YAAY;QACZ,WAAW;QACX,WAAW;QACX,eAAe;QACf,WAAW;KACZ,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC;QACR,0BAA0B,CAAC,cAAM,OAAA,gBAAgB,EAAhB,CAAgB,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAEnD,IAAA,iBAAS,EAAC;QACR,IAAI,KAAK,KAAK,sBAAc,CAAC,iBAAiB,EAAE,CAAC;YAC/C,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ;;OAEG;IACH,IAAM,aAAa,GAAG,IAAA,mBAAW,EAAC;;;;;oBAChC,IAAI,YAAY,IAAI,CAAC,iBAAiB,IAAI,CAAC,mBAAmB;wBAAE,sBAAO;oBACvE,IAAI,aAAa,EAAE,CAAC;wBAClB,eAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;wBACvE,sBAAO;oBACT,CAAC;oBAED,eAAe,CAAC,IAAI,CAAC,CAAC;oBACtB,eAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;;;;oBAGjD,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;oBACzC,qBAAM,iBAAiB,CAAC,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;oBAC9B,eAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;;;;oBAErC,yBAAyB,CAAC,OAAO,GAAG,KAAK,CAAC;oBAC1C,eAAe,CAAC,KAAK,CAAC,CAAC;oBACvB,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAK,CAAC,CAAC;;;;;SAExD,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1E,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,0BAA0B,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,oEAAoE;YACpE,OAAO;QACT,CAAC;QAED,IAAI,0BAA0B,CAAC,OAAO,EAAE,CAAC;YACvC,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,0BAA0B,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1C,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,WAAW,CAAC,aAAa,CACvB,IAAI,KAAK,CACP,4FAA4F,CAC7F,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7C,2BAA2B;IAC3B,IAAA,iBAAS,EAAC;;QACR,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhE,IAAM,eAAe,GAAG,QAAQ,CAAC;QACjC,IAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;QAC7C,IAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS;YAChD,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtC,CAAC,CAAC,IAAI,CAAC;QACT,IAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC/C,IAAM,aAAa,GAAG,MAAA,aAAa,CAAC,OAAO,mCAAI,IAAI,CAAC;QACpD,IAAM,kBAAkB,GACtB,aAAa,IAAI,IAAI,IAAI,yBAAyB,CAAC,OAAO,KAAK,aAAa,CAAC;QAE/E,IACE,eAAe,KAAK,YAAY;YAChC,gBAAgB,KAAK,aAAa;YAClC,kBAAkB,EAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC;QAC1C,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC;QAC5C,IAAI,aAAa,EAAE,CAAC;YAClB,yBAAyB,CAAC,OAAO,GAAG,aAAa,CAAC;QACpD,CAAC;QAED,yCAAyC;QACzC,IAAI,aAAa,EAAE,CAAC;YAClB,eAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAE1D,CAAC;;;;;;;4BAEG,IAAI,CAAC,IAAI,EAAE,CAAC;gCACV,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;4BACnD,CAAC;4BACmB,qBAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,EAAA;;4BAAnE,WAAW,GAAG,SAAqD;4BACnE,cAAc,GAAG,WAAW,IAAI,IAAI,CAAC;4BACrC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;4BACtC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC1D,cAAc,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,mCAAI,EAAE,CAAC;4BAC7C,oBAAoB,GACxB,eAAe,IAAI,IAAI,IAAI,OAAO,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,eAAe,CAAC,CAAC,CAAC;4BAExE,IAAI,eAAe,IAAI,CAAC,oBAAoB,EAAE,CAAC;gCAC7C,eAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;gCAC9E,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;oCAClC,IAAI,CAAC;wCACG,YAAY,GAAG,uBAAgB,aAAa,CAAC,OAAO,CAAE,CAAC;wCAC7D,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oCAC/C,CAAC;oCAAC,OAAO,YAAY,EAAE,CAAC;wCACtB,eAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,YAAY,CAAC,CAAC;oCACjF,CAAC;gCACH,CAAC;4BACH,CAAC;4BAEK,gBAAgB,GAAG,oBAAoB,CAAC;4BAE9C,aAAa,CAAC,EAAE,cAAc,gBAAA,EAAE,gBAAgB,kBAAA,EAAE,CAAC,CAAC;4BAEpD,IACE,KAAK,KAAK,sBAAc,CAAC,iBAAiB;gCAC1C,CAAC,OAAO,CAAC,iBAAiB,EAC1B,CAAC;gCACD,IAAI,CAAC;oCACG,iBAAiB,GAAG,IAAA,sCAAqB,EAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oCACvE,IAAI,iBAAiB,EAAE,CAAC;wCACtB,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;wCACzD,WAAW,CAAC,kBAAkB,CAAC;4CAC7B,aAAa,EAAE,iBAAiB,CAAC,aAAa;4CAC9C,MAAM,EAAE,iBAAiB;yCAC1B,CAAC,CAAC;wCACH,kBAAkB,EAAE,CAAC;wCACrB,eAAe,CAAC,KAAK,CAAC,CAAC;wCACvB,sBAAO;oCACT,CAAC;gCACH,CAAC;gCAAC,OAAO,KAAK,EAAE,CAAC;oCACf,eAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gCAC9D,CAAC;4BACH,CAAC;4BAEK,qBAAqB,GAAG,cAAc;gCAC1C,CAAC,CAAC,gBAAgB;oCAChB,CAAC,CAAC,sBAAc,CAAC,aAAa;oCAC9B,CAAC,CAAC,sBAAc,CAAC,YAAY;gCAC/B,CAAC,CAAC,sBAAc,CAAC,eAAe,CAAC;4BAEnC,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAAC;gCACvC,cAAc,CAAC,IAAI,CAAC,CAAC;4BACvB,CAAC;4BACD,kBAAkB,EAAE,CAAC;4BAErB,4CAA4C;4BAC5C,IAAI,CAAC;gCACH,eAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,qBAAqB,CAAC,CAAC;gCAClE,IAAI,qBAAqB,KAAK,sBAAc,CAAC,aAAa,EAAE,CAAC;oCAC3D,WAAW,CAAC,YAAY,CAAC;wCACvB,cAAc,gBAAA;wCACd,gBAAgB,kBAAA;qCACjB,CAAC,CAAC;gCACL,CAAC;qCAAM,IAAI,qBAAqB,KAAK,sBAAc,CAAC,YAAY,EAAE,CAAC;oCACjE,WAAW,CAAC,WAAW,CAAC,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;gCAC9C,CAAC;qCAAM,CAAC;oCACN,WAAW,CAAC,kBAAkB,EAAE,CAAC;gCACnC,CAAC;gCACD,eAAM,CAAC,KAAK,CACV,gBAAgB,GAAG,qBAAqB,GAAG,YAAY,CACxD,CAAC;4BACJ,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,eAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;4BAClD,CAAC;oCAAS,CAAC;gCACT,eAAe,CAAC,KAAK,CAAC,CAAC;4BACzB,CAAC;;;;4BAED,eAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAK,CAAC,CAAC;4BACtD,kBAAkB,EAAE,CAAC;4BACrB,eAAe,CAAC,KAAK,CAAC,CAAC;;;;;iBAE1B,CAAC,EAAE,CAAC;QACP,CAAC;IACH,CAAC,EAAE;QACD,IAAI;QACJ,QAAQ;QACR,aAAa;QACb,aAAa;QACb,WAAW;QACX,cAAc;QACd,KAAK;QACL,mBAAmB;QACnB,OAAO,CAAC,iBAAiB;QACzB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS;QACnB,kBAAkB;KACnB,CAAC,CAAC;IAKH,uDAAuD;IACvD,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,YAAY,IAAI,KAAK,KAAK,sBAAc,CAAC,iBAAiB,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACjF,kBAAkB,EAAE,CAAC;YACrB,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzD,uDAAuD;IACvD,IAAA,iBAAS,EAAC;QACR,IAAM,YAAY,GAAG,KAAK,CAAC;QAC3B,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,gCAAgC;QAChC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,YAAY,KAAK,sBAAc,CAAC,iBAAiB,IAAI,YAAY,EAAE,CAAC;gBACtE,wEAAwE;gBACxE,eAAe,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YAED,aAAa;YACb,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1B,2BAA2B;IAC3B,IAAM,YAAY,GAAiC;QACjD,YAAY,cAAA;QACZ,aAAa,eAAA;QACb,gBAAgB,kBAAA;KACjB,CAAC;IAEF,OAAO,CACL,uBAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAClD,QAAQ,GACwB,CACpC,CAAC;AACJ,CAAC,CAAC;AA9XW,QAAA,wBAAwB,4BA8XnC;AAEF;;;;GAIG;AACI,IAAM,mBAAmB,GAAG;IACjC,IAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,uBAAuB,CAAC,CAAC;IAEpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B","sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../../../hooks';\nimport { logger } from '../../../utils/logger';\nimport { OnboardingStep, initialOnboardingContext } from '../types';\nimport { useOnboardingState } from './OnboardingStateProvider';\nimport { clearLastDepositRecord, readLastDepositRecord } from '../utils/depositStorage';\nimport { N1ModalViewMode } from '../../../types/wallet';\nimport { removeKeysFromLocalStorage } from '../utils/utils';\n\nexport const FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';\n// Define the shape of the context value\nexport interface WalletConnectionContextValue {\n isConnecting: boolean;\n connectWallet: () => Promise<void>;\n disconnectWallet: () => void;\n}\n\n// Create the context with a default value\nconst WalletConnectionContext = createContext<WalletConnectionContextValue | undefined>(undefined);\n\n// Props for the provider component\ninterface WalletConnectionProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Provider component for the wallet connection context\n */\nexport const WalletConnectionProvider: React.FC<WalletConnectionProviderProps> = ({\n children,\n}) => {\n const { nord, nordUser, address, setShowLogin, showLogin } = useN1WalletContext();\n const {\n showDynamicWidget,\n dynamicWallet,\n setIsConnected,\n dynamicSdkHasLoaded,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setNordUser,\n setViewMode,\n setWalletPubKey,\n setUsername,\n setUserChain,\n setStartClosingLogin,\n setDisconnectWalletHandler,\n } = useN1WalletInternalContext();\n\n // Get flow context\n const {\n state,\n context,\n actions: flowActions,\n updateContext,\n } = useOnboardingState();\n\n const [isConnecting, setIsConnecting] = useState(false);\n const dynamicWidgetRequestedRef = useRef(false);\n\n // Use refs to track previous values\n const processedWalletAddressRef = useRef<string | null>(null);\n const prevNordUserRef = useRef(nordUser);\n const prevSessionIdRef = useRef<string | null>(\n nordUser?.sessionId ? nordUser.sessionId.toString() : null\n );\n const prevStateRef = useRef(state);\n const reportedNordClientErrorRef = useRef(false);\n\n\n const clearWalletCache = useCallback(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n if (address) {\n const sessionIdKey = `n1_sessionId_${address}`;\n window.localStorage.removeItem(sessionIdKey);\n removeKeysFromLocalStorage(address);\n }\n\n window.localStorage.removeItem(FLOW_STATE_STORAGE_KEY);\n clearLastDepositRecord(address);\n updateContext(initialOnboardingContext);\n logger.debug('Cleared wallet cache for address', { address });\n } catch (error) {\n logger.warn('Failed to clear wallet cache', error);\n }\n }, [address, updateContext]);\n\n const closeDynamicWidget = useCallback(() => {\n if (!dynamicWidgetRequestedRef.current) {\n return;\n }\n\n if (showDynamicWidget) {\n try {\n showDynamicWidget(false);\n } catch (error) {\n logger.warn('Failed to close Dynamic widget', error);\n }\n }\n\n dynamicWidgetRequestedRef.current = false;\n }, [showDynamicWidget]);\n\n /**\n * Disconnect wallet\n */\n const disconnectWallet = useCallback(() => {\n logger.debug('Disconnecting wallet');\n try {\n clearWalletCache();\n dynamicHandleLogOut?.();\n closeDynamicWidget();\n } catch (error) {\n logger.warn('Error during wallet disconnect', error);\n }\n\n processedWalletAddressRef.current = null;\n setIsConnected(false);\n setAddress('');\n setBalances([]);\n setChain('');\n setDynamicWallet(null);\n setSessionPubKey(null);\n setWalletPubKey(null);\n setSignMessageWithSessionKey(null);\n setSignMessageWithWalletKey(null);\n setSignTransactionWithWalletKey(null);\n setUserChain(null);\n setUsername('');\n setNordUser(null);\n setViewMode(N1ModalViewMode.Automatic);\n setShowLogin(false);\n setStartClosingLogin(false);\n flowActions.resetFlow();\n }, [\n clearWalletCache,\n closeDynamicWidget,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setIsConnected,\n setNordUser,\n setSessionPubKey,\n setShowLogin,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUserChain,\n setUsername,\n setViewMode,\n setWalletPubKey,\n flowActions,\n ]);\n\n useEffect(() => {\n setDisconnectWalletHandler(() => disconnectWallet);\n }, [disconnectWallet, setDisconnectWalletHandler]);\n\n useEffect(() => {\n if (state === OnboardingStep.CONNECTING_WALLET) {\n processedWalletAddressRef.current = null;\n }\n }, [state]);\n\n /**\n * Connect wallet using Dynamic widget\n */\n const connectWallet = useCallback(async () => {\n if (isConnecting || !showDynamicWidget || !dynamicSdkHasLoaded) return;\n if (dynamicWallet) {\n logger.debug('Dynamic wallet already available; skipping widget open');\n return;\n }\n\n setIsConnecting(true);\n logger.debug('Starting wallet connection process');\n\n try {\n dynamicWidgetRequestedRef.current = true;\n await showDynamicWidget(true);\n logger.debug('Dynamic widget shown');\n } catch (error) {\n dynamicWidgetRequestedRef.current = false;\n setIsConnecting(false);\n logger.error('Error showing Dynamic widget:', error);\n }\n }, [isConnecting, showDynamicWidget, dynamicSdkHasLoaded, dynamicWallet]);\n\n useEffect(() => {\n if (!dynamicSdkHasLoaded) {\n return;\n }\n\n if (nord) {\n reportedNordClientErrorRef.current = false;\n return;\n }\n\n if (typeof nord === 'undefined') {\n // Nord client is still initializing; wait before reporting an error\n return;\n }\n\n if (reportedNordClientErrorRef.current) {\n setIsConnecting(false);\n return;\n }\n\n reportedNordClientErrorRef.current = true;\n setIsConnecting(false);\n flowActions.setErrorState(\n new Error(\n 'The client could not be initialized. Verify your Nord environment variables and try again.'\n )\n );\n }, [dynamicSdkHasLoaded, nord, flowActions]);\n\n // Process nordUser changes\n useEffect(() => {\n if (!dynamicSdkHasLoaded || !nordUser || !dynamicWallet) return;\n\n const currentNordUser = nordUser;\n const prevNordUser = prevNordUserRef.current;\n const currentSessionId = currentNordUser.sessionId\n ? currentNordUser.sessionId.toString()\n : null;\n const prevSessionId = prevSessionIdRef.current;\n const walletAddress = dynamicWallet.address ?? null;\n const hasProcessedWallet =\n walletAddress != null && processedWalletAddressRef.current === walletAddress;\n\n if (\n currentNordUser === prevNordUser &&\n currentSessionId === prevSessionId &&\n hasProcessedWallet\n ) {\n return;\n }\n\n prevNordUserRef.current = currentNordUser;\n prevSessionIdRef.current = currentSessionId;\n if (walletAddress) {\n processedWalletAddressRef.current = walletAddress;\n }\n\n // Only run if we have processed a wallet\n if (dynamicWallet) {\n logger.debug('NordUser changed, checking account status');\n\n (async () => {\n try {\n if (!nord) {\n throw new Error('Nord client is not available.');\n }\n const nordAccount = await nord.getUser({ pubkey: dynamicWallet.address });\n const hasNordAccount = nordAccount != null;\n const sessionId = currentNordUser.sessionId;\n const sessionIdString = sessionId ? sessionId.toString() : null;\n const serverSessions = nordAccount?.sessions ?? {};\n const sessionMatchesServer =\n sessionIdString != null && Boolean(serverSessions?.[sessionIdString]);\n\n if (sessionIdString && !sessionMatchesServer) {\n logger.debug('Stored session is missing on Nord; clearing cached session ID');\n if (typeof window !== 'undefined') {\n try {\n const sessionIdKey = `n1_sessionId_${dynamicWallet.address}`;\n window.localStorage.removeItem(sessionIdKey);\n } catch (storageError) {\n logger.warn('Failed to clear stale sessionId from localStorage', storageError);\n }\n }\n }\n\n const hasActiveSession = sessionMatchesServer;\n\n updateContext({ hasNordAccount, hasActiveSession });\n\n if (\n state === OnboardingStep.CONNECTING_WALLET &&\n !context.isDepositOnlyFlow\n ) {\n try {\n const lastDepositRecord = readLastDepositRecord(dynamicWallet.address);\n if (lastDepositRecord) {\n logger.debug('Resuming last deposit from local storage');\n flowActions.markDepositSuccess({\n transactionId: lastDepositRecord.transactionId,\n record: lastDepositRecord,\n });\n closeDynamicWidget();\n setIsConnecting(false);\n return;\n }\n } catch (error) {\n logger.error('Error restoring last deposit record:', error);\n }\n }\n\n const transitionDestination = hasNordAccount\n ? hasActiveSession\n ? OnboardingStep.FINAL_SUCCESS\n : OnboardingStep.AUTH_LOADING\n : OnboardingStep.CHAIN_SELECTION;\n\n if (hasNordAccount && hasActiveSession) {\n setIsConnected(true);\n }\n closeDynamicWidget();\n\n // Transition immediately without setTimeout\n try {\n logger.debug('Attempting transition to ' + transitionDestination);\n if (transitionDestination === OnboardingStep.FINAL_SUCCESS) {\n flowActions.completeFlow({\n hasNordAccount,\n hasActiveSession,\n });\n } else if (transitionDestination === OnboardingStep.AUTH_LOADING) {\n flowActions.requireAuth({ hasNordAccount });\n } else {\n flowActions.goToChainSelection();\n }\n logger.debug(\n 'Transition to ' + transitionDestination + ' completed'\n );\n } catch (error) {\n logger.error('Error during transition:', error);\n } finally {\n setIsConnecting(false);\n }\n } catch (error) {\n logger.error('Error checking account status:', error);\n closeDynamicWidget();\n setIsConnecting(false);\n }\n })();\n }\n }, [\n nord,\n nordUser,\n dynamicWallet,\n updateContext,\n flowActions,\n setIsConnected,\n state,\n dynamicSdkHasLoaded,\n context.isDepositOnlyFlow,\n nordUser?.sessionId,\n closeDynamicWidget,\n ]);\n\n\n\n\n // Handle Dynamic widget closing while still connecting\n useEffect(() => {\n if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {\n return;\n }\n\n if (!showLogin) {\n logger.debug('Wallet modal closed before connection completed; resetting state');\n closeDynamicWidget();\n setIsConnecting(false);\n }\n }, [isConnecting, showLogin, state, closeDynamicWidget]);\n\n // Handle connecting state changes in a separate effect\n useEffect(() => {\n const currentState = state;\n const prevState = prevStateRef.current;\n\n // Only run if state has changed\n if (currentState !== prevState) {\n if (currentState !== OnboardingStep.CONNECTING_WALLET && isConnecting) {\n // If we're no longer in the connecting state, reset the connecting flag\n setIsConnecting(false);\n }\n\n // Update ref\n prevStateRef.current = currentState;\n }\n }, [state, isConnecting]);\n\n // Create the context value\n const contextValue: WalletConnectionContextValue = {\n isConnecting,\n connectWallet,\n disconnectWallet,\n };\n\n return (\n <WalletConnectionContext.Provider value={contextValue}>\n {children}\n </WalletConnectionContext.Provider>\n );\n};\n\n/**\n * Custom hook to use the wallet connection context\n * @returns The wallet connection context value\n * @throws Error if used outside of a WalletConnectionProvider\n */\nexport const useWalletConnection = (): WalletConnectionContextValue => {\n const context = useContext(WalletConnectionContext);\n\n if (context === undefined) {\n throw new Error('useWalletConnection must be used within a WalletConnectionProvider');\n }\n\n return context;\n};\n"]}
1
+ {"version":3,"file":"WalletConnectionProvider.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/WalletConnectionProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAc,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,CAAC,IAAM,sBAAsB,GAAG,iCAAiC,CAAC;AAQxE,0CAA0C;AAC1C,IAAM,uBAAuB,GAAG,aAAa,CAA2C,SAAS,CAAC,CAAC;AAOnG;;GAEG;AACH,MAAM,CAAC,IAAM,wBAAwB,GAA4C,UAAC,EAEjF;QADC,QAAQ,cAAA;IAEF,IAAA,KAAuD,kBAAkB,EAAE,EAAzE,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,OAAO,aAAA,EAAE,YAAY,kBAAA,EAAE,SAAS,eAAyB,CAAC;IAC5E,IAAA,KAqBF,0BAA0B,EAAE,EApB9B,iBAAiB,uBAAA,EACjB,aAAa,mBAAA,EACb,cAAc,oBAAA,EACd,mBAAmB,yBAAA,EACnB,mBAAmB,yBAAA,EACnB,UAAU,gBAAA,EACV,WAAW,iBAAA,EACX,QAAQ,cAAA,EACR,gBAAgB,sBAAA,EAChB,gBAAgB,sBAAA,EAChB,4BAA4B,kCAAA,EAC5B,2BAA2B,iCAAA,EAC3B,+BAA+B,qCAAA,EAC/B,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,eAAe,qBAAA,EACf,WAAW,iBAAA,EACX,YAAY,kBAAA,EACZ,oBAAoB,0BAAA,EACpB,0BAA0B,gCACI,CAAC;IAEjC,mBAAmB;IACb,IAAA,KAKF,kBAAkB,EAAE,EAJtB,KAAK,WAAA,EACL,OAAO,aAAA,EACE,WAAW,aAAA,EACpB,aAAa,mBACS,CAAC;IAEnB,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IACxD,IAAM,yBAAyB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhD,oCAAoC;IACpC,IAAM,yBAAyB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAC9D,IAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAM,gBAAgB,GAAG,MAAM,CAC7B,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,EAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3D,CAAC;IACF,IAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,IAAM,0BAA0B,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAGjD,IAAM,gBAAgB,GAAG,WAAW,CAAC;QACnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAM,YAAY,GAAG,uBAAgB,OAAO,CAAE,CAAC;gBAC/C,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAC7C,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;YACvD,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChC,aAAa,CAAC,wBAAwB,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAE7B,IAAM,kBAAkB,GAAG,WAAW,CAAC;QACrC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,yBAAyB,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5C,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB;;OAEG;IACH,IAAM,gBAAgB,GAAG,WAAW,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,gBAAgB,EAAE,CAAC;YACnB,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,EAAI,CAAC;YACxB,kBAAkB,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;QACzC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,UAAU,CAAC,EAAE,CAAC,CAAC;QACf,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACnC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAClC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QACtC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACvC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,WAAW,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC,EAAE;QACD,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,UAAU;QACV,WAAW;QACX,QAAQ;QACR,gBAAgB;QAChB,cAAc;QACd,WAAW;QACX,gBAAgB;QAChB,YAAY;QACZ,4BAA4B;QAC5B,2BAA2B;QAC3B,+BAA+B;QAC/B,oBAAoB;QACpB,YAAY;QACZ,WAAW;QACX,WAAW;QACX,eAAe;QACf,WAAW;KACZ,CAAC,CAAC;IAEH,SAAS,CAAC;QACR,0BAA0B,CAAC,cAAM,OAAA,gBAAgB,EAAhB,CAAgB,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAEnD,SAAS,CAAC;QACR,IAAI,KAAK,KAAK,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAC/C,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ;;OAEG;IACH,IAAM,aAAa,GAAG,WAAW,CAAC;;;;;oBAChC,IAAI,YAAY,IAAI,CAAC,iBAAiB,IAAI,CAAC,mBAAmB;wBAAE,sBAAO;oBACvE,IAAI,aAAa,EAAE,CAAC;wBAClB,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;wBACvE,sBAAO;oBACT,CAAC;oBAED,eAAe,CAAC,IAAI,CAAC,CAAC;oBACtB,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;;;;oBAGjD,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;oBACzC,qBAAM,iBAAiB,CAAC,IAAI,CAAC,EAAA;;oBAA7B,SAA6B,CAAC;oBAC9B,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;;;;oBAErC,yBAAyB,CAAC,OAAO,GAAG,KAAK,CAAC;oBAC1C,eAAe,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAK,CAAC,CAAC;;;;;SAExD,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1E,SAAS,CAAC;QACR,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,0BAA0B,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,oEAAoE;YACpE,OAAO;QACT,CAAC;QAED,IAAI,0BAA0B,CAAC,OAAO,EAAE,CAAC;YACvC,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,0BAA0B,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1C,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,WAAW,CAAC,aAAa,CACvB,IAAI,KAAK,CACP,4FAA4F,CAC7F,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7C,2BAA2B;IAC3B,SAAS,CAAC;;QACR,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhE,IAAM,eAAe,GAAG,QAAQ,CAAC;QACjC,IAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;QAC7C,IAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS;YAChD,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtC,CAAC,CAAC,IAAI,CAAC;QACT,IAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC/C,IAAM,aAAa,GAAG,MAAA,aAAa,CAAC,OAAO,mCAAI,IAAI,CAAC;QACpD,IAAM,kBAAkB,GACtB,aAAa,IAAI,IAAI,IAAI,yBAAyB,CAAC,OAAO,KAAK,aAAa,CAAC;QAE/E,IACE,eAAe,KAAK,YAAY;YAChC,gBAAgB,KAAK,aAAa;YAClC,kBAAkB,EAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC;QAC1C,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC;QAC5C,IAAI,aAAa,EAAE,CAAC;YAClB,yBAAyB,CAAC,OAAO,GAAG,aAAa,CAAC;QACpD,CAAC;QAED,yCAAyC;QACzC,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAE1D,CAAC;;;;;;;4BAEG,IAAI,CAAC,IAAI,EAAE,CAAC;gCACV,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;4BACnD,CAAC;4BACmB,qBAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,EAAA;;4BAAnE,WAAW,GAAG,SAAqD;4BACnE,cAAc,GAAG,WAAW,IAAI,IAAI,CAAC;4BACrC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;4BACtC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC1D,cAAc,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,mCAAI,EAAE,CAAC;4BAC7C,oBAAoB,GACxB,eAAe,IAAI,IAAI,IAAI,OAAO,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,eAAe,CAAC,CAAC,CAAC;4BAExE,IAAI,eAAe,IAAI,CAAC,oBAAoB,EAAE,CAAC;gCAC7C,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;gCAC9E,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;oCAClC,IAAI,CAAC;wCACG,YAAY,GAAG,uBAAgB,aAAa,CAAC,OAAO,CAAE,CAAC;wCAC7D,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oCAC/C,CAAC;oCAAC,OAAO,YAAY,EAAE,CAAC;wCACtB,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,YAAY,CAAC,CAAC;oCACjF,CAAC;gCACH,CAAC;4BACH,CAAC;4BAEK,gBAAgB,GAAG,oBAAoB,CAAC;4BAE9C,aAAa,CAAC,EAAE,cAAc,gBAAA,EAAE,gBAAgB,kBAAA,EAAE,CAAC,CAAC;4BAEpD,IACE,KAAK,KAAK,cAAc,CAAC,iBAAiB;gCAC1C,CAAC,OAAO,CAAC,iBAAiB,EAC1B,CAAC;gCACD,IAAI,CAAC;oCACG,iBAAiB,GAAG,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oCACvE,IAAI,iBAAiB,EAAE,CAAC;wCACtB,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;wCACzD,WAAW,CAAC,kBAAkB,CAAC;4CAC7B,aAAa,EAAE,iBAAiB,CAAC,aAAa;4CAC9C,MAAM,EAAE,iBAAiB;yCAC1B,CAAC,CAAC;wCACH,kBAAkB,EAAE,CAAC;wCACrB,eAAe,CAAC,KAAK,CAAC,CAAC;wCACvB,sBAAO;oCACT,CAAC;gCACH,CAAC;gCAAC,OAAO,KAAK,EAAE,CAAC;oCACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gCAC9D,CAAC;4BACH,CAAC;4BAEK,qBAAqB,GAAG,cAAc;gCAC1C,CAAC,CAAC,gBAAgB;oCAChB,CAAC,CAAC,cAAc,CAAC,aAAa;oCAC9B,CAAC,CAAC,cAAc,CAAC,YAAY;gCAC/B,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC;4BAEnC,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAAC;gCACvC,cAAc,CAAC,IAAI,CAAC,CAAC;4BACvB,CAAC;4BACD,kBAAkB,EAAE,CAAC;4BAErB,4CAA4C;4BAC5C,IAAI,CAAC;gCACH,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,qBAAqB,CAAC,CAAC;gCAClE,IAAI,qBAAqB,KAAK,cAAc,CAAC,aAAa,EAAE,CAAC;oCAC3D,WAAW,CAAC,YAAY,CAAC;wCACvB,cAAc,gBAAA;wCACd,gBAAgB,kBAAA;qCACjB,CAAC,CAAC;gCACL,CAAC;qCAAM,IAAI,qBAAqB,KAAK,cAAc,CAAC,YAAY,EAAE,CAAC;oCACjE,WAAW,CAAC,WAAW,CAAC,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;gCAC9C,CAAC;qCAAM,CAAC;oCACN,WAAW,CAAC,kBAAkB,EAAE,CAAC;gCACnC,CAAC;gCACD,MAAM,CAAC,KAAK,CACV,gBAAgB,GAAG,qBAAqB,GAAG,YAAY,CACxD,CAAC;4BACJ,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;4BAClD,CAAC;oCAAS,CAAC;gCACT,eAAe,CAAC,KAAK,CAAC,CAAC;4BACzB,CAAC;;;;4BAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAK,CAAC,CAAC;4BACtD,kBAAkB,EAAE,CAAC;4BACrB,eAAe,CAAC,KAAK,CAAC,CAAC;;;;;iBAE1B,CAAC,EAAE,CAAC;QACP,CAAC;IACH,CAAC,EAAE;QACD,IAAI;QACJ,QAAQ;QACR,aAAa;QACb,aAAa;QACb,WAAW;QACX,cAAc;QACd,KAAK;QACL,mBAAmB;QACnB,OAAO,CAAC,iBAAiB;QACzB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS;QACnB,kBAAkB;KACnB,CAAC,CAAC;IAKH,uDAAuD;IACvD,SAAS,CAAC;QACR,IAAI,CAAC,YAAY,IAAI,KAAK,KAAK,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACjF,kBAAkB,EAAE,CAAC;YACrB,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzD,uDAAuD;IACvD,SAAS,CAAC;QACR,IAAM,YAAY,GAAG,KAAK,CAAC;QAC3B,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,gCAAgC;QAChC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,YAAY,KAAK,cAAc,CAAC,iBAAiB,IAAI,YAAY,EAAE,CAAC;gBACtE,wEAAwE;gBACxE,eAAe,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YAED,aAAa;YACb,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1B,2BAA2B;IAC3B,IAAM,YAAY,GAAiC;QACjD,YAAY,cAAA;QACZ,aAAa,eAAA;QACb,gBAAgB,kBAAA;KACjB,CAAC;IAEF,OAAO,CACL,KAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAClD,QAAQ,GACwB,CACpC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG;IACjC,IAAM,OAAO,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAEpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext, useN1WalletInternalContext } from '../../../hooks';\nimport { logger } from '../../../utils/logger';\nimport { OnboardingStep, initialOnboardingContext } from '../types';\nimport { useOnboardingState } from './OnboardingStateProvider';\nimport { clearLastDepositRecord, readLastDepositRecord } from '../utils/depositStorage';\nimport { N1ModalViewMode } from '../../../types/wallet';\nimport { removeKeysFromLocalStorage } from '../utils/utils';\n\nexport const FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';\n// Define the shape of the context value\nexport interface WalletConnectionContextValue {\n isConnecting: boolean;\n connectWallet: () => Promise<void>;\n disconnectWallet: () => void;\n}\n\n// Create the context with a default value\nconst WalletConnectionContext = createContext<WalletConnectionContextValue | undefined>(undefined);\n\n// Props for the provider component\ninterface WalletConnectionProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Provider component for the wallet connection context\n */\nexport const WalletConnectionProvider: React.FC<WalletConnectionProviderProps> = ({\n children,\n}) => {\n const { nord, nordUser, address, setShowLogin, showLogin } = useN1WalletContext();\n const {\n showDynamicWidget,\n dynamicWallet,\n setIsConnected,\n dynamicSdkHasLoaded,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setNordUser,\n setViewMode,\n setWalletPubKey,\n setUsername,\n setUserChain,\n setStartClosingLogin,\n setDisconnectWalletHandler,\n } = useN1WalletInternalContext();\n\n // Get flow context\n const {\n state,\n context,\n actions: flowActions,\n updateContext,\n } = useOnboardingState();\n\n const [isConnecting, setIsConnecting] = useState(false);\n const dynamicWidgetRequestedRef = useRef(false);\n\n // Use refs to track previous values\n const processedWalletAddressRef = useRef<string | null>(null);\n const prevNordUserRef = useRef(nordUser);\n const prevSessionIdRef = useRef<string | null>(\n nordUser?.sessionId ? nordUser.sessionId.toString() : null\n );\n const prevStateRef = useRef(state);\n const reportedNordClientErrorRef = useRef(false);\n\n\n const clearWalletCache = useCallback(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n if (address) {\n const sessionIdKey = `n1_sessionId_${address}`;\n window.localStorage.removeItem(sessionIdKey);\n removeKeysFromLocalStorage(address);\n }\n\n window.localStorage.removeItem(FLOW_STATE_STORAGE_KEY);\n clearLastDepositRecord(address);\n updateContext(initialOnboardingContext);\n logger.debug('Cleared wallet cache for address', { address });\n } catch (error) {\n logger.warn('Failed to clear wallet cache', error);\n }\n }, [address, updateContext]);\n\n const closeDynamicWidget = useCallback(() => {\n if (!dynamicWidgetRequestedRef.current) {\n return;\n }\n\n if (showDynamicWidget) {\n try {\n showDynamicWidget(false);\n } catch (error) {\n logger.warn('Failed to close Dynamic widget', error);\n }\n }\n\n dynamicWidgetRequestedRef.current = false;\n }, [showDynamicWidget]);\n\n /**\n * Disconnect wallet\n */\n const disconnectWallet = useCallback(() => {\n logger.debug('Disconnecting wallet');\n try {\n clearWalletCache();\n dynamicHandleLogOut?.();\n closeDynamicWidget();\n } catch (error) {\n logger.warn('Error during wallet disconnect', error);\n }\n\n processedWalletAddressRef.current = null;\n setIsConnected(false);\n setAddress('');\n setBalances([]);\n setChain('');\n setDynamicWallet(null);\n setSessionPubKey(null);\n setWalletPubKey(null);\n setSignMessageWithSessionKey(null);\n setSignMessageWithWalletKey(null);\n setSignTransactionWithWalletKey(null);\n setUserChain(null);\n setUsername('');\n setNordUser(null);\n setViewMode(N1ModalViewMode.Automatic);\n setShowLogin(false);\n setStartClosingLogin(false);\n flowActions.resetFlow();\n }, [\n clearWalletCache,\n closeDynamicWidget,\n dynamicHandleLogOut,\n setAddress,\n setBalances,\n setChain,\n setDynamicWallet,\n setIsConnected,\n setNordUser,\n setSessionPubKey,\n setShowLogin,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n setStartClosingLogin,\n setUserChain,\n setUsername,\n setViewMode,\n setWalletPubKey,\n flowActions,\n ]);\n\n useEffect(() => {\n setDisconnectWalletHandler(() => disconnectWallet);\n }, [disconnectWallet, setDisconnectWalletHandler]);\n\n useEffect(() => {\n if (state === OnboardingStep.CONNECTING_WALLET) {\n processedWalletAddressRef.current = null;\n }\n }, [state]);\n\n /**\n * Connect wallet using Dynamic widget\n */\n const connectWallet = useCallback(async () => {\n if (isConnecting || !showDynamicWidget || !dynamicSdkHasLoaded) return;\n if (dynamicWallet) {\n logger.debug('Dynamic wallet already available; skipping widget open');\n return;\n }\n\n setIsConnecting(true);\n logger.debug('Starting wallet connection process');\n\n try {\n dynamicWidgetRequestedRef.current = true;\n await showDynamicWidget(true);\n logger.debug('Dynamic widget shown');\n } catch (error) {\n dynamicWidgetRequestedRef.current = false;\n setIsConnecting(false);\n logger.error('Error showing Dynamic widget:', error);\n }\n }, [isConnecting, showDynamicWidget, dynamicSdkHasLoaded, dynamicWallet]);\n\n useEffect(() => {\n if (!dynamicSdkHasLoaded) {\n return;\n }\n\n if (nord) {\n reportedNordClientErrorRef.current = false;\n return;\n }\n\n if (typeof nord === 'undefined') {\n // Nord client is still initializing; wait before reporting an error\n return;\n }\n\n if (reportedNordClientErrorRef.current) {\n setIsConnecting(false);\n return;\n }\n\n reportedNordClientErrorRef.current = true;\n setIsConnecting(false);\n flowActions.setErrorState(\n new Error(\n 'The client could not be initialized. Verify your Nord environment variables and try again.'\n )\n );\n }, [dynamicSdkHasLoaded, nord, flowActions]);\n\n // Process nordUser changes\n useEffect(() => {\n if (!dynamicSdkHasLoaded || !nordUser || !dynamicWallet) return;\n\n const currentNordUser = nordUser;\n const prevNordUser = prevNordUserRef.current;\n const currentSessionId = currentNordUser.sessionId\n ? currentNordUser.sessionId.toString()\n : null;\n const prevSessionId = prevSessionIdRef.current;\n const walletAddress = dynamicWallet.address ?? null;\n const hasProcessedWallet =\n walletAddress != null && processedWalletAddressRef.current === walletAddress;\n\n if (\n currentNordUser === prevNordUser &&\n currentSessionId === prevSessionId &&\n hasProcessedWallet\n ) {\n return;\n }\n\n prevNordUserRef.current = currentNordUser;\n prevSessionIdRef.current = currentSessionId;\n if (walletAddress) {\n processedWalletAddressRef.current = walletAddress;\n }\n\n // Only run if we have processed a wallet\n if (dynamicWallet) {\n logger.debug('NordUser changed, checking account status');\n\n (async () => {\n try {\n if (!nord) {\n throw new Error('Nord client is not available.');\n }\n const nordAccount = await nord.getUser({ pubkey: dynamicWallet.address });\n const hasNordAccount = nordAccount != null;\n const sessionId = currentNordUser.sessionId;\n const sessionIdString = sessionId ? sessionId.toString() : null;\n const serverSessions = nordAccount?.sessions ?? {};\n const sessionMatchesServer =\n sessionIdString != null && Boolean(serverSessions?.[sessionIdString]);\n\n if (sessionIdString && !sessionMatchesServer) {\n logger.debug('Stored session is missing on Nord; clearing cached session ID');\n if (typeof window !== 'undefined') {\n try {\n const sessionIdKey = `n1_sessionId_${dynamicWallet.address}`;\n window.localStorage.removeItem(sessionIdKey);\n } catch (storageError) {\n logger.warn('Failed to clear stale sessionId from localStorage', storageError);\n }\n }\n }\n\n const hasActiveSession = sessionMatchesServer;\n\n updateContext({ hasNordAccount, hasActiveSession });\n\n if (\n state === OnboardingStep.CONNECTING_WALLET &&\n !context.isDepositOnlyFlow\n ) {\n try {\n const lastDepositRecord = readLastDepositRecord(dynamicWallet.address);\n if (lastDepositRecord) {\n logger.debug('Resuming last deposit from local storage');\n flowActions.markDepositSuccess({\n transactionId: lastDepositRecord.transactionId,\n record: lastDepositRecord,\n });\n closeDynamicWidget();\n setIsConnecting(false);\n return;\n }\n } catch (error) {\n logger.error('Error restoring last deposit record:', error);\n }\n }\n\n const transitionDestination = hasNordAccount\n ? hasActiveSession\n ? OnboardingStep.FINAL_SUCCESS\n : OnboardingStep.AUTH_LOADING\n : OnboardingStep.CHAIN_SELECTION;\n\n if (hasNordAccount && hasActiveSession) {\n setIsConnected(true);\n }\n closeDynamicWidget();\n\n // Transition immediately without setTimeout\n try {\n logger.debug('Attempting transition to ' + transitionDestination);\n if (transitionDestination === OnboardingStep.FINAL_SUCCESS) {\n flowActions.completeFlow({\n hasNordAccount,\n hasActiveSession,\n });\n } else if (transitionDestination === OnboardingStep.AUTH_LOADING) {\n flowActions.requireAuth({ hasNordAccount });\n } else {\n flowActions.goToChainSelection();\n }\n logger.debug(\n 'Transition to ' + transitionDestination + ' completed'\n );\n } catch (error) {\n logger.error('Error during transition:', error);\n } finally {\n setIsConnecting(false);\n }\n } catch (error) {\n logger.error('Error checking account status:', error);\n closeDynamicWidget();\n setIsConnecting(false);\n }\n })();\n }\n }, [\n nord,\n nordUser,\n dynamicWallet,\n updateContext,\n flowActions,\n setIsConnected,\n state,\n dynamicSdkHasLoaded,\n context.isDepositOnlyFlow,\n nordUser?.sessionId,\n closeDynamicWidget,\n ]);\n\n\n\n\n // Handle Dynamic widget closing while still connecting\n useEffect(() => {\n if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {\n return;\n }\n\n if (!showLogin) {\n logger.debug('Wallet modal closed before connection completed; resetting state');\n closeDynamicWidget();\n setIsConnecting(false);\n }\n }, [isConnecting, showLogin, state, closeDynamicWidget]);\n\n // Handle connecting state changes in a separate effect\n useEffect(() => {\n const currentState = state;\n const prevState = prevStateRef.current;\n\n // Only run if state has changed\n if (currentState !== prevState) {\n if (currentState !== OnboardingStep.CONNECTING_WALLET && isConnecting) {\n // If we're no longer in the connecting state, reset the connecting flag\n setIsConnecting(false);\n }\n\n // Update ref\n prevStateRef.current = currentState;\n }\n }, [state, isConnecting]);\n\n // Create the context value\n const contextValue: WalletConnectionContextValue = {\n isConnecting,\n connectWallet,\n disconnectWallet,\n };\n\n return (\n <WalletConnectionContext.Provider value={contextValue}>\n {children}\n </WalletConnectionContext.Provider>\n );\n};\n\n/**\n * Custom hook to use the wallet connection context\n * @returns The wallet connection context value\n * @throws Error if used outside of a WalletConnectionProvider\n */\nexport const useWalletConnection = (): WalletConnectionContextValue => {\n const context = useContext(WalletConnectionContext);\n\n if (context === undefined) {\n throw new Error('useWalletConnection must be used within a WalletConnectionProvider');\n }\n\n return context;\n};\n"]}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __assign = (this && this.__assign) || function () {
3
2
  __assign = Object.assign || function(t) {
4
3
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -11,53 +10,51 @@ var __assign = (this && this.__assign) || function () {
11
10
  return __assign.apply(this, arguments);
12
11
  };
13
12
  var _a;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.DEBUG_VIEW_TO_FLOW = void 0;
16
- var solana_1 = require("../../../config/solana");
17
- var wallet_1 = require("../../../types/wallet");
18
- var types_1 = require("../types");
13
+ import { SolanaNetwork } from "../../../config/solana";
14
+ import { N1ModalViewMode } from "../../../types/wallet";
15
+ import { OnboardingStep, initialOnboardingContext, } from "../types";
19
16
  var buildDebugContext = function (overrides) {
20
17
  if (overrides === void 0) { overrides = {}; }
21
- return (__assign(__assign({}, types_1.initialOnboardingContext), overrides));
18
+ return (__assign(__assign({}, initialOnboardingContext), overrides));
22
19
  };
23
- exports.DEBUG_VIEW_TO_FLOW = (_a = {},
24
- _a[wallet_1.N1ModalViewMode.Connect] = {
25
- state: types_1.OnboardingStep.CONNECTING_WALLET,
20
+ export var DEBUG_VIEW_TO_FLOW = (_a = {},
21
+ _a[N1ModalViewMode.Connect] = {
22
+ state: OnboardingStep.CONNECTING_WALLET,
26
23
  context: buildDebugContext(),
27
24
  },
28
- _a[wallet_1.N1ModalViewMode.ChainSelection] = {
29
- state: types_1.OnboardingStep.CHAIN_SELECTION,
25
+ _a[N1ModalViewMode.ChainSelection] = {
26
+ state: OnboardingStep.CHAIN_SELECTION,
30
27
  context: buildDebugContext({ selectedChain: null }),
31
28
  },
32
- _a[wallet_1.N1ModalViewMode.CreateSession] = {
33
- state: types_1.OnboardingStep.AUTH_LOADING,
29
+ _a[N1ModalViewMode.CreateSession] = {
30
+ state: OnboardingStep.AUTH_LOADING,
34
31
  context: buildDebugContext({
35
32
  hasNordAccount: true,
36
33
  hasActiveSession: false,
37
34
  }),
38
35
  },
39
- _a[wallet_1.N1ModalViewMode.Signing] = {
40
- state: types_1.OnboardingStep.DEPOSIT_PROGRESS,
36
+ _a[N1ModalViewMode.Signing] = {
37
+ state: OnboardingStep.DEPOSIT_PROGRESS,
41
38
  context: buildDebugContext({
42
39
  hasNordAccount: false,
43
40
  hasActiveSession: false,
44
41
  }),
45
42
  },
46
- _a[wallet_1.N1ModalViewMode.CreatingUser] = {
47
- state: types_1.OnboardingStep.AMOUNT_INPUT,
43
+ _a[N1ModalViewMode.CreatingUser] = {
44
+ state: OnboardingStep.AMOUNT_INPUT,
48
45
  context: buildDebugContext({
49
46
  hasNordAccount: false,
50
47
  hasActiveSession: false,
51
48
  }),
52
49
  },
53
- _a[wallet_1.N1ModalViewMode.DepositSuccess] = {
54
- state: types_1.OnboardingStep.DEPOSIT_SUCCESS,
50
+ _a[N1ModalViewMode.DepositSuccess] = {
51
+ state: OnboardingStep.DEPOSIT_SUCCESS,
55
52
  context: buildDebugContext({
56
53
  hasNordAccount: true,
57
54
  hasActiveSession: true,
58
55
  selectedChain: "solana-mainnet",
59
56
  selectedChainId: "solana",
60
- selectedChainNetwork: solana_1.SolanaNetwork.MAINNET,
57
+ selectedChainNetwork: SolanaNetwork.MAINNET,
61
58
  amount: "1,250",
62
59
  transactionId: "debug-tx-12345",
63
60
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/debug.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iDAAuD;AACvD,gDAAwD;AACxD,kCAKkB;AAElB,IAAM,iBAAiB,GAAG,UAAC,SAA0C;IAA1C,0BAAA,EAAA,cAA0C;IAAK,OAAA,uBACrE,gCAAwB,GACxB,SAAS,EACZ;AAHwE,CAGxE,CAAC;AAIU,QAAA,kBAAkB;IAG7B,GAAC,wBAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,sBAAc,CAAC,iBAAiB;QACvC,OAAO,EAAE,iBAAiB,EAAE;KAC7B;IACD,GAAC,wBAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,sBAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;KACpD;IACD,GAAC,wBAAe,CAAC,aAAa,IAAG;QAC/B,KAAK,EAAE,sBAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,wBAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,sBAAc,CAAC,gBAAgB;QACtC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,wBAAe,CAAC,YAAY,IAAG;QAC9B,KAAK,EAAE,sBAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,wBAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,sBAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,gBAAgB;YAC/B,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,sBAAa,CAAC,OAAO;YAC3C,MAAM,EAAE,OAAO;YACf,aAAa,EAAE,gBAAgB;SAChC,CAAC;KACH;QACD","sourcesContent":["import { SolanaNetwork } from \"../../../config/solana\";\nimport { N1ModalViewMode } from \"../../../types/wallet\";\nimport {\n OnboardingContext,\n OnboardingStep,\n WaitingMessageState,\n initialOnboardingContext,\n} from \"../types\";\n\nconst buildDebugContext = (overrides: Partial<OnboardingContext> = {}) => ({\n ...initialOnboardingContext,\n ...overrides,\n});\n\n\n\nexport const DEBUG_VIEW_TO_FLOW: Partial<\n Record<N1ModalViewMode, { state: OnboardingStep; context: OnboardingContext }>\n> = {\n [N1ModalViewMode.Connect]: {\n state: OnboardingStep.CONNECTING_WALLET,\n context: buildDebugContext(),\n },\n [N1ModalViewMode.ChainSelection]: {\n state: OnboardingStep.CHAIN_SELECTION,\n context: buildDebugContext({ selectedChain: null }),\n },\n [N1ModalViewMode.CreateSession]: {\n state: OnboardingStep.AUTH_LOADING,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.Signing]: {\n state: OnboardingStep.DEPOSIT_PROGRESS,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.CreatingUser]: {\n state: OnboardingStep.AMOUNT_INPUT,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.DepositSuccess]: {\n state: OnboardingStep.DEPOSIT_SUCCESS,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: true,\n selectedChain: \"solana-mainnet\",\n selectedChainId: \"solana\",\n selectedChainNetwork: SolanaNetwork.MAINNET,\n amount: \"1,250\",\n transactionId: \"debug-tx-12345\",\n }),\n },\n};\n"]}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/debug.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAEL,cAAc,EAEd,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAElB,IAAM,iBAAiB,GAAG,UAAC,SAA0C;IAA1C,0BAAA,EAAA,cAA0C;IAAK,OAAA,uBACrE,wBAAwB,GACxB,SAAS,EACZ;AAHwE,CAGxE,CAAC;AAIH,MAAM,CAAC,IAAM,kBAAkB;IAG7B,GAAC,eAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,cAAc,CAAC,iBAAiB;QACvC,OAAO,EAAE,iBAAiB,EAAE;KAC7B;IACD,GAAC,eAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,cAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;KACpD;IACD,GAAC,eAAe,CAAC,aAAa,IAAG;QAC/B,KAAK,EAAE,cAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,eAAe,CAAC,OAAO,IAAG;QACzB,KAAK,EAAE,cAAc,CAAC,gBAAgB;QACtC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,eAAe,CAAC,YAAY,IAAG;QAC9B,KAAK,EAAE,cAAc,CAAC,YAAY;QAClC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACxB,CAAC;KACH;IACD,GAAC,eAAe,CAAC,cAAc,IAAG;QAChC,KAAK,EAAE,cAAc,CAAC,eAAe;QACrC,OAAO,EAAE,iBAAiB,CAAC;YACzB,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,gBAAgB;YAC/B,eAAe,EAAE,QAAQ;YACzB,oBAAoB,EAAE,aAAa,CAAC,OAAO;YAC3C,MAAM,EAAE,OAAO;YACf,aAAa,EAAE,gBAAgB;SAChC,CAAC;KACH;OACF,CAAC","sourcesContent":["import { SolanaNetwork } from \"../../../config/solana\";\nimport { N1ModalViewMode } from \"../../../types/wallet\";\nimport {\n OnboardingContext,\n OnboardingStep,\n WaitingMessageState,\n initialOnboardingContext,\n} from \"../types\";\n\nconst buildDebugContext = (overrides: Partial<OnboardingContext> = {}) => ({\n ...initialOnboardingContext,\n ...overrides,\n});\n\n\n\nexport const DEBUG_VIEW_TO_FLOW: Partial<\n Record<N1ModalViewMode, { state: OnboardingStep; context: OnboardingContext }>\n> = {\n [N1ModalViewMode.Connect]: {\n state: OnboardingStep.CONNECTING_WALLET,\n context: buildDebugContext(),\n },\n [N1ModalViewMode.ChainSelection]: {\n state: OnboardingStep.CHAIN_SELECTION,\n context: buildDebugContext({ selectedChain: null }),\n },\n [N1ModalViewMode.CreateSession]: {\n state: OnboardingStep.AUTH_LOADING,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.Signing]: {\n state: OnboardingStep.DEPOSIT_PROGRESS,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.CreatingUser]: {\n state: OnboardingStep.AMOUNT_INPUT,\n context: buildDebugContext({\n hasNordAccount: false,\n hasActiveSession: false,\n }),\n },\n [N1ModalViewMode.DepositSuccess]: {\n state: OnboardingStep.DEPOSIT_SUCCESS,\n context: buildDebugContext({\n hasNordAccount: true,\n hasActiveSession: true,\n selectedChain: \"solana-mainnet\",\n selectedChainId: \"solana\",\n selectedChainNetwork: SolanaNetwork.MAINNET,\n amount: \"1,250\",\n transactionId: \"debug-tx-12345\",\n }),\n },\n};\n"]}
@@ -1,19 +1,8 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = exports.OnboardingProvider = exports.useDepositFlow = exports.useWalletConnection = exports.useOnboardingState = void 0;
7
1
  // Re-export provider hooks
8
- var OnboardingStateProvider_1 = require("./OnboardingStateProvider");
9
- Object.defineProperty(exports, "useOnboardingState", { enumerable: true, get: function () { return OnboardingStateProvider_1.useOnboardingState; } });
10
- var WalletConnectionProvider_1 = require("./WalletConnectionProvider");
11
- Object.defineProperty(exports, "useWalletConnection", { enumerable: true, get: function () { return WalletConnectionProvider_1.useWalletConnection; } });
12
- var DepositFlowProvider_1 = require("./DepositFlowProvider");
13
- Object.defineProperty(exports, "useDepositFlow", { enumerable: true, get: function () { return DepositFlowProvider_1.useDepositFlow; } });
14
- var StateProvider_1 = require("./StateProvider");
15
- Object.defineProperty(exports, "OnboardingProvider", { enumerable: true, get: function () { return StateProvider_1.StateProvider; } });
2
+ export { useOnboardingState } from './OnboardingStateProvider';
3
+ export { useWalletConnection, } from './WalletConnectionProvider';
4
+ export { useDepositFlow, } from './DepositFlowProvider';
5
+ export { StateProvider as OnboardingProvider } from './StateProvider';
16
6
  // Default export the combined provider
17
- var StateProvider_2 = require("./StateProvider");
18
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(StateProvider_2).default; } });
7
+ export { default } from './StateProvider';
19
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/index.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA2B;AAC3B,qEAA+D;AAAtD,6HAAA,kBAAkB,OAAA;AAC3B,uEAEoC;AADlC,+HAAA,mBAAmB,OAAA;AAErB,6DAE+B;AAD7B,qHAAA,cAAc,OAAA;AAEhB,iDAAsE;AAA7D,mHAAA,aAAa,OAAsB;AAE5C,uCAAuC;AACvC,iDAA0C;AAAjC,yHAAA,OAAO,OAAA","sourcesContent":["// Re-export provider hooks\nexport { useOnboardingState } from './OnboardingStateProvider';\nexport {\n useWalletConnection,\n} from './WalletConnectionProvider';\nexport {\n useDepositFlow,\n} from './DepositFlowProvider';\nexport { StateProvider as OnboardingProvider } from './StateProvider';\n\n// Default export the combined provider\nexport { default } from './StateProvider';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["// Re-export provider hooks\nexport { useOnboardingState } from './OnboardingStateProvider';\nexport {\n useWalletConnection,\n} from './WalletConnectionProvider';\nexport {\n useDepositFlow,\n} from './DepositFlowProvider';\nexport { StateProvider as OnboardingProvider } from './StateProvider';\n\n// Default export the combined provider\nexport { default } from './StateProvider';\n"]}