@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.
- package/dist/animations/N1Loader.js +8 -14
- package/dist/animations/N1Loader.js.map +1 -1
- package/dist/animations/Processing.js +8 -14
- package/dist/animations/Processing.js.map +1 -1
- package/dist/components/LoadingFallback.js +2 -6
- package/dist/components/LoadingFallback.js.map +1 -1
- package/dist/components/Logo.js +22 -25
- package/dist/components/Logo.js.map +1 -1
- package/dist/components/N1ConnectButton.js +12 -18
- package/dist/components/N1ConnectButton.js.map +1 -1
- package/dist/components/logos/ArbitrumLogo.js +3 -7
- package/dist/components/logos/ArbitrumLogo.js.map +1 -1
- package/dist/components/logos/BaseLogo.js +3 -7
- package/dist/components/logos/BaseLogo.js.map +1 -1
- package/dist/components/logos/BeraLogo.js +3 -7
- package/dist/components/logos/BeraLogo.js.map +1 -1
- package/dist/components/logos/BitcoinLogo.js +3 -7
- package/dist/components/logos/BitcoinLogo.js.map +1 -1
- package/dist/components/logos/EthereumLogo.js +3 -7
- package/dist/components/logos/EthereumLogo.js.map +1 -1
- package/dist/components/logos/HyperliquidLogo.js +3 -7
- package/dist/components/logos/HyperliquidLogo.js.map +1 -1
- package/dist/components/logos/OptimismLogo.js +3 -7
- package/dist/components/logos/OptimismLogo.js.map +1 -1
- package/dist/components/logos/SolanaLogo.js +3 -7
- package/dist/components/logos/SolanaLogo.js.map +1 -1
- package/dist/components/logos/ZeroOneLogo.js +3 -7
- package/dist/components/logos/ZeroOneLogo.js.map +1 -1
- package/dist/components/logos/index.js +9 -25
- package/dist/components/logos/index.js.map +1 -1
- package/dist/config/solana.js +3 -7
- package/dist/config/solana.js.map +1 -1
- package/dist/config.js +2 -5
- package/dist/config.js.map +1 -1
- package/dist/context/n1-wallet-context.js +4 -8
- package/dist/context/n1-wallet-context.js.map +1 -1
- package/dist/errors/types.js +3 -6
- package/dist/errors/types.js.map +1 -1
- package/dist/features/onboarding-flow/N1WalletModal.js +23 -59
- package/dist/features/onboarding-flow/N1WalletModal.js.map +1 -1
- package/dist/features/onboarding-flow/OnboardingFlow.js +46 -50
- package/dist/features/onboarding-flow/OnboardingFlow.js.map +1 -1
- package/dist/features/onboarding-flow/components/ChainButton.js +4 -7
- package/dist/features/onboarding-flow/components/ChainButton.js.map +1 -1
- package/dist/features/onboarding-flow/components/Header.js +11 -15
- package/dist/features/onboarding-flow/components/Header.js.map +1 -1
- package/dist/features/onboarding-flow/components/ImageWithFallback.js +6 -10
- package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -1
- package/dist/features/onboarding-flow/components/TransactionTable.js +10 -13
- package/dist/features/onboarding-flow/components/TransactionTable.js.map +1 -1
- package/dist/features/onboarding-flow/components/WaitingMessage.js +8 -14
- package/dist/features/onboarding-flow/components/WaitingMessage.js.map +1 -1
- package/dist/features/onboarding-flow/components/index.js +5 -21
- package/dist/features/onboarding-flow/components/index.js.map +1 -1
- package/dist/features/onboarding-flow/index.js +1 -5
- package/dist/features/onboarding-flow/index.js.map +1 -1
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +55 -60
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +43 -48
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/StateProvider.js +7 -11
- package/dist/features/onboarding-flow/providers/StateProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +69 -74
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/debug.js +18 -21
- package/dist/features/onboarding-flow/providers/debug.js.map +1 -1
- package/dist/features/onboarding-flow/providers/index.js +5 -16
- package/dist/features/onboarding-flow/providers/index.js.map +1 -1
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js +15 -20
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js +8 -11
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js +34 -38
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +47 -51
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +8 -12
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js +25 -28
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js +10 -13
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +7 -10
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/index.js +7 -23
- package/dist/features/onboarding-flow/screens/index.js.map +1 -1
- package/dist/features/onboarding-flow/types.js +3 -6
- package/dist/features/onboarding-flow/types.js.map +1 -1
- package/dist/features/onboarding-flow/utils/depositStorage.js +3 -8
- package/dist/features/onboarding-flow/utils/depositStorage.js.map +1 -1
- package/dist/features/onboarding-flow/utils/imageUtils.js +3 -9
- package/dist/features/onboarding-flow/utils/imageUtils.js.map +1 -1
- package/dist/features/onboarding-flow/utils/nordUser.js +2 -38
- package/dist/features/onboarding-flow/utils/nordUser.js.map +1 -1
- package/dist/features/onboarding-flow/utils/nordUtils.js +5 -12
- package/dist/features/onboarding-flow/utils/nordUtils.js.map +1 -1
- package/dist/features/onboarding-flow/utils/session.js +14 -17
- package/dist/features/onboarding-flow/utils/session.js.map +1 -1
- package/dist/features/onboarding-flow/utils/transaction.js +1 -4
- package/dist/features/onboarding-flow/utils/transaction.js.map +1 -1
- package/dist/features/onboarding-flow/utils/utils.js +8 -16
- package/dist/features/onboarding-flow/utils/utils.js.map +1 -1
- package/dist/features/onboarding-flow/utils/withImageFallback.js +9 -15
- package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -1
- package/dist/hooks/index.js +2 -18
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useN1Wallet.js +6 -10
- package/dist/hooks/useN1Wallet.js.map +1 -1
- package/dist/hooks/useNordUserInitialization.js +31 -34
- package/dist/hooks/useNordUserInitialization.js.map +1 -1
- package/dist/index.js +7 -21
- package/dist/index.js.map +1 -1
- package/dist/main.css +2 -0
- package/dist/polyfills/windowEthereumGuard.js +1 -2
- package/dist/polyfills/windowEthereumGuard.js.map +1 -1
- package/dist/providers/LazyWalletProvider.js +38 -74
- package/dist/providers/LazyWalletProvider.js.map +1 -1
- package/dist/providers/N1WalletProvider.js +70 -109
- package/dist/providers/N1WalletProvider.js.map +1 -1
- package/dist/providers/ShadowRootWrapper.js +4 -10
- package/dist/providers/ShadowRootWrapper.js.map +1 -1
- package/dist/providers/WalletErrorBoundary.js +6 -11
- package/dist/providers/WalletErrorBoundary.js.map +1 -1
- package/dist/styles/embedded-main-css.js +1 -3
- package/dist/styles/embedded-main-css.js.map +1 -1
- package/dist/styles/main.css +1 -1
- package/dist/types/wallet.js +4 -7
- package/dist/types/wallet.js.map +1 -1
- package/dist/utils/ed25519.js +14 -20
- package/dist/utils/ed25519.js.map +1 -1
- package/dist/utils/getPseudoName.js +7 -10
- package/dist/utils/getPseudoName.js.map +1 -1
- package/dist/utils/logger.js +3 -5
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/shortenString.js +2 -6
- package/dist/utils/shortenString.js.map +1 -1
- package/dist/utils/words.js +1 -4
- package/dist/utils/words.js.map +1 -1
- 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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var
|
|
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 =
|
|
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 =
|
|
58
|
-
var _c =
|
|
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 =
|
|
61
|
-
var _e =
|
|
62
|
-
var dynamicWidgetRequestedRef =
|
|
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 =
|
|
65
|
-
var prevNordUserRef =
|
|
66
|
-
var prevSessionIdRef =
|
|
67
|
-
var prevStateRef =
|
|
68
|
-
var reportedNordClientErrorRef =
|
|
69
|
-
var clearWalletCache =
|
|
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
|
-
|
|
74
|
+
removeKeysFromLocalStorage(address);
|
|
78
75
|
}
|
|
79
|
-
window.localStorage.removeItem(
|
|
80
|
-
|
|
81
|
-
updateContext(
|
|
82
|
-
|
|
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
|
-
|
|
82
|
+
logger.warn('Failed to clear wallet cache', error);
|
|
86
83
|
}
|
|
87
84
|
}, [address, updateContext]);
|
|
88
|
-
var closeDynamicWidget =
|
|
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
|
-
|
|
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 =
|
|
106
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
152
|
+
useEffect(function () {
|
|
156
153
|
setDisconnectWalletHandler(function () { return disconnectWallet; });
|
|
157
154
|
}, [disconnectWallet, setDisconnectWalletHandler]);
|
|
158
|
-
|
|
159
|
-
if (state ===
|
|
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 =
|
|
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
|
-
|
|
171
|
+
logger.debug('Dynamic wallet already available; skipping widget open');
|
|
175
172
|
return [2 /*return*/];
|
|
176
173
|
}
|
|
177
174
|
setIsConnecting(true);
|
|
178
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ===
|
|
273
|
+
if (state === OnboardingStep.CONNECTING_WALLET &&
|
|
277
274
|
!context.isDepositOnlyFlow) {
|
|
278
275
|
try {
|
|
279
|
-
lastDepositRecord =
|
|
276
|
+
lastDepositRecord = readLastDepositRecord(dynamicWallet.address);
|
|
280
277
|
if (lastDepositRecord) {
|
|
281
|
-
|
|
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
|
-
|
|
289
|
+
logger.error('Error restoring last deposit record:', error);
|
|
293
290
|
}
|
|
294
291
|
}
|
|
295
292
|
transitionDestination = hasNordAccount
|
|
296
293
|
? hasActiveSession
|
|
297
|
-
?
|
|
298
|
-
:
|
|
299
|
-
:
|
|
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
|
-
|
|
307
|
-
if (transitionDestination ===
|
|
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 ===
|
|
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
|
-
|
|
316
|
+
logger.debug('Transition to ' + transitionDestination + ' completed');
|
|
320
317
|
}
|
|
321
318
|
catch (error) {
|
|
322
|
-
|
|
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
|
-
|
|
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
|
-
|
|
354
|
-
if (!isConnecting || state !==
|
|
350
|
+
useEffect(function () {
|
|
351
|
+
if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {
|
|
355
352
|
return;
|
|
356
353
|
}
|
|
357
354
|
if (!showLogin) {
|
|
358
|
-
|
|
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
|
-
|
|
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 !==
|
|
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 ((
|
|
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 =
|
|
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":"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","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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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({},
|
|
18
|
+
return (__assign(__assign({}, initialOnboardingContext), overrides));
|
|
22
19
|
};
|
|
23
|
-
|
|
24
|
-
_a[
|
|
25
|
-
state:
|
|
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[
|
|
29
|
-
state:
|
|
25
|
+
_a[N1ModalViewMode.ChainSelection] = {
|
|
26
|
+
state: OnboardingStep.CHAIN_SELECTION,
|
|
30
27
|
context: buildDebugContext({ selectedChain: null }),
|
|
31
28
|
},
|
|
32
|
-
_a[
|
|
33
|
-
state:
|
|
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[
|
|
40
|
-
state:
|
|
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[
|
|
47
|
-
state:
|
|
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[
|
|
54
|
-
state:
|
|
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:
|
|
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":"
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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":"
|
|
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"]}
|