@n1xyz/wallet-widget 0.0.33-alpha.1 → 0.0.33-alpha.3
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 +14 -8
- package/dist/animations/N1Loader.js.map +1 -1
- package/dist/animations/Processing.js +14 -8
- package/dist/animations/Processing.js.map +1 -1
- package/dist/components/LoadingFallback.js +6 -2
- package/dist/components/LoadingFallback.js.map +1 -1
- package/dist/components/Logo.js +25 -22
- package/dist/components/Logo.js.map +1 -1
- package/dist/components/N1ConnectButton.js +18 -12
- package/dist/components/N1ConnectButton.js.map +1 -1
- package/dist/components/logos/ArbitrumLogo.js +7 -3
- package/dist/components/logos/ArbitrumLogo.js.map +1 -1
- package/dist/components/logos/BaseLogo.js +7 -3
- package/dist/components/logos/BaseLogo.js.map +1 -1
- package/dist/components/logos/BeraLogo.js +7 -3
- package/dist/components/logos/BeraLogo.js.map +1 -1
- package/dist/components/logos/BitcoinLogo.js +7 -3
- package/dist/components/logos/BitcoinLogo.js.map +1 -1
- package/dist/components/logos/EthereumLogo.js +7 -3
- package/dist/components/logos/EthereumLogo.js.map +1 -1
- package/dist/components/logos/HyperliquidLogo.js +7 -3
- package/dist/components/logos/HyperliquidLogo.js.map +1 -1
- package/dist/components/logos/OptimismLogo.js +7 -3
- package/dist/components/logos/OptimismLogo.js.map +1 -1
- package/dist/components/logos/SolanaLogo.js +7 -3
- package/dist/components/logos/SolanaLogo.js.map +1 -1
- package/dist/components/logos/ZeroOneLogo.js +7 -3
- package/dist/components/logos/ZeroOneLogo.js.map +1 -1
- package/dist/components/logos/index.js +25 -9
- package/dist/components/logos/index.js.map +1 -1
- package/dist/config/solana.js +7 -3
- package/dist/config/solana.js.map +1 -1
- package/dist/config.js +5 -2
- package/dist/config.js.map +1 -1
- package/dist/context/n1-wallet-context.js +8 -4
- package/dist/context/n1-wallet-context.js.map +1 -1
- package/dist/errors/types.js +6 -3
- package/dist/errors/types.js.map +1 -1
- package/dist/features/onboarding-flow/N1WalletModal.js +59 -23
- package/dist/features/onboarding-flow/N1WalletModal.js.map +1 -1
- package/dist/features/onboarding-flow/OnboardingFlow.js +50 -46
- package/dist/features/onboarding-flow/OnboardingFlow.js.map +1 -1
- package/dist/features/onboarding-flow/components/ChainButton.js +7 -4
- package/dist/features/onboarding-flow/components/ChainButton.js.map +1 -1
- package/dist/features/onboarding-flow/components/Header.js +15 -11
- package/dist/features/onboarding-flow/components/Header.js.map +1 -1
- package/dist/features/onboarding-flow/components/ImageWithFallback.js +10 -6
- package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -1
- package/dist/features/onboarding-flow/components/TransactionTable.js +13 -10
- package/dist/features/onboarding-flow/components/TransactionTable.js.map +1 -1
- package/dist/features/onboarding-flow/components/WaitingMessage.js +14 -8
- package/dist/features/onboarding-flow/components/WaitingMessage.js.map +1 -1
- package/dist/features/onboarding-flow/components/index.js +21 -5
- package/dist/features/onboarding-flow/components/index.js.map +1 -1
- package/dist/features/onboarding-flow/index.js +5 -1
- package/dist/features/onboarding-flow/index.js.map +1 -1
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +60 -55
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +48 -43
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/StateProvider.js +11 -7
- package/dist/features/onboarding-flow/providers/StateProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +74 -69
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -1
- package/dist/features/onboarding-flow/providers/debug.js +21 -18
- package/dist/features/onboarding-flow/providers/debug.js.map +1 -1
- package/dist/features/onboarding-flow/providers/index.js +16 -5
- package/dist/features/onboarding-flow/providers/index.js.map +1 -1
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js +20 -15
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js +11 -8
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js +38 -34
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +51 -47
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +12 -8
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js +28 -25
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js +13 -10
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +10 -7
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +1 -1
- package/dist/features/onboarding-flow/screens/index.js +23 -7
- package/dist/features/onboarding-flow/screens/index.js.map +1 -1
- package/dist/features/onboarding-flow/types.js +6 -3
- package/dist/features/onboarding-flow/types.js.map +1 -1
- package/dist/features/onboarding-flow/utils/depositStorage.js +8 -3
- package/dist/features/onboarding-flow/utils/depositStorage.js.map +1 -1
- package/dist/features/onboarding-flow/utils/imageUtils.js +9 -3
- package/dist/features/onboarding-flow/utils/imageUtils.js.map +1 -1
- package/dist/features/onboarding-flow/utils/nordUser.js +38 -2
- package/dist/features/onboarding-flow/utils/nordUser.js.map +1 -1
- package/dist/features/onboarding-flow/utils/nordUtils.js +12 -5
- package/dist/features/onboarding-flow/utils/nordUtils.js.map +1 -1
- package/dist/features/onboarding-flow/utils/session.js +17 -14
- package/dist/features/onboarding-flow/utils/session.js.map +1 -1
- package/dist/features/onboarding-flow/utils/transaction.js +4 -1
- package/dist/features/onboarding-flow/utils/transaction.js.map +1 -1
- package/dist/features/onboarding-flow/utils/utils.js +16 -8
- package/dist/features/onboarding-flow/utils/utils.js.map +1 -1
- package/dist/features/onboarding-flow/utils/withImageFallback.js +15 -9
- package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -1
- package/dist/hooks/index.js +18 -2
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useN1Wallet.js +10 -6
- package/dist/hooks/useN1Wallet.js.map +1 -1
- package/dist/hooks/useNordUserInitialization.js +34 -31
- package/dist/hooks/useNordUserInitialization.js.map +1 -1
- package/dist/index.js +21 -7
- package/dist/index.js.map +1 -1
- package/dist/polyfills/windowEthereumGuard.js +2 -1
- package/dist/polyfills/windowEthereumGuard.js.map +1 -1
- package/dist/providers/LazyWalletProvider.js +74 -38
- package/dist/providers/LazyWalletProvider.js.map +1 -1
- package/dist/providers/N1WalletProvider.js +109 -70
- package/dist/providers/N1WalletProvider.js.map +1 -1
- package/dist/providers/ShadowRootWrapper.js +10 -4
- package/dist/providers/ShadowRootWrapper.js.map +1 -1
- package/dist/providers/WalletErrorBoundary.js +11 -6
- package/dist/providers/WalletErrorBoundary.js.map +1 -1
- package/dist/styles/embedded-main-css.js +3 -1
- package/dist/styles/embedded-main-css.js.map +1 -1
- package/dist/types/wallet.js +7 -4
- package/dist/types/wallet.js.map +1 -1
- package/dist/utils/ed25519.js +20 -14
- package/dist/utils/ed25519.js.map +1 -1
- package/dist/utils/getPseudoName.js +10 -7
- package/dist/utils/getPseudoName.js.map +1 -1
- package/dist/utils/logger.js +5 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/shortenString.js +6 -2
- package/dist/utils/shortenString.js.map +1 -1
- package/dist/utils/words.js +4 -1
- package/dist/utils/words.js.map +1 -1
- package/package.json +1 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -34,36 +35,38 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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';
|
|
47
50
|
// Create the context with a default value
|
|
48
|
-
var WalletConnectionContext = createContext(undefined);
|
|
51
|
+
var WalletConnectionContext = (0, react_1.createContext)(undefined);
|
|
49
52
|
/**
|
|
50
53
|
* Provider component for the wallet connection context
|
|
51
54
|
*/
|
|
52
|
-
|
|
55
|
+
var WalletConnectionProvider = function (_a) {
|
|
53
56
|
var children = _a.children;
|
|
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;
|
|
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;
|
|
56
59
|
// Get flow context
|
|
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);
|
|
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);
|
|
60
63
|
// Use refs to track previous values
|
|
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 () {
|
|
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 () {
|
|
67
70
|
if (typeof window === 'undefined') {
|
|
68
71
|
return;
|
|
69
72
|
}
|
|
@@ -71,18 +74,18 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
71
74
|
if (address) {
|
|
72
75
|
var sessionIdKey = "n1_sessionId_".concat(address);
|
|
73
76
|
window.localStorage.removeItem(sessionIdKey);
|
|
74
|
-
removeKeysFromLocalStorage(address);
|
|
77
|
+
(0, utils_1.removeKeysFromLocalStorage)(address);
|
|
75
78
|
}
|
|
76
|
-
window.localStorage.removeItem(FLOW_STATE_STORAGE_KEY);
|
|
77
|
-
clearLastDepositRecord(address);
|
|
78
|
-
updateContext(initialOnboardingContext);
|
|
79
|
-
logger.debug('Cleared wallet cache for address', { address: address });
|
|
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 });
|
|
80
83
|
}
|
|
81
84
|
catch (error) {
|
|
82
|
-
logger.warn('Failed to clear wallet cache', error);
|
|
85
|
+
logger_1.logger.warn('Failed to clear wallet cache', error);
|
|
83
86
|
}
|
|
84
87
|
}, [address, updateContext]);
|
|
85
|
-
var closeDynamicWidget = useCallback(function () {
|
|
88
|
+
var closeDynamicWidget = (0, react_1.useCallback)(function () {
|
|
86
89
|
if (!dynamicWidgetRequestedRef.current) {
|
|
87
90
|
return;
|
|
88
91
|
}
|
|
@@ -91,7 +94,7 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
91
94
|
showDynamicWidget(false);
|
|
92
95
|
}
|
|
93
96
|
catch (error) {
|
|
94
|
-
logger.warn('Failed to close Dynamic widget', error);
|
|
97
|
+
logger_1.logger.warn('Failed to close Dynamic widget', error);
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
dynamicWidgetRequestedRef.current = false;
|
|
@@ -99,15 +102,15 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
99
102
|
/**
|
|
100
103
|
* Disconnect wallet
|
|
101
104
|
*/
|
|
102
|
-
var disconnectWallet = useCallback(function () {
|
|
103
|
-
logger.debug('Disconnecting wallet');
|
|
105
|
+
var disconnectWallet = (0, react_1.useCallback)(function () {
|
|
106
|
+
logger_1.logger.debug('Disconnecting wallet');
|
|
104
107
|
try {
|
|
105
108
|
clearWalletCache();
|
|
106
109
|
dynamicHandleLogOut === null || dynamicHandleLogOut === void 0 ? void 0 : dynamicHandleLogOut();
|
|
107
110
|
closeDynamicWidget();
|
|
108
111
|
}
|
|
109
112
|
catch (error) {
|
|
110
|
-
logger.warn('Error during wallet disconnect', error);
|
|
113
|
+
logger_1.logger.warn('Error during wallet disconnect', error);
|
|
111
114
|
}
|
|
112
115
|
processedWalletAddressRef.current = null;
|
|
113
116
|
setIsConnected(false);
|
|
@@ -123,7 +126,7 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
123
126
|
setUserChain(null);
|
|
124
127
|
setUsername('');
|
|
125
128
|
setNordUser(null);
|
|
126
|
-
setViewMode(N1ModalViewMode.Automatic);
|
|
129
|
+
setViewMode(wallet_1.N1ModalViewMode.Automatic);
|
|
127
130
|
setShowLogin(false);
|
|
128
131
|
setStartClosingLogin(false);
|
|
129
132
|
flowActions.resetFlow();
|
|
@@ -149,18 +152,18 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
149
152
|
setWalletPubKey,
|
|
150
153
|
flowActions,
|
|
151
154
|
]);
|
|
152
|
-
useEffect(function () {
|
|
155
|
+
(0, react_1.useEffect)(function () {
|
|
153
156
|
setDisconnectWalletHandler(function () { return disconnectWallet; });
|
|
154
157
|
}, [disconnectWallet, setDisconnectWalletHandler]);
|
|
155
|
-
useEffect(function () {
|
|
156
|
-
if (state === OnboardingStep.CONNECTING_WALLET) {
|
|
158
|
+
(0, react_1.useEffect)(function () {
|
|
159
|
+
if (state === types_1.OnboardingStep.CONNECTING_WALLET) {
|
|
157
160
|
processedWalletAddressRef.current = null;
|
|
158
161
|
}
|
|
159
162
|
}, [state]);
|
|
160
163
|
/**
|
|
161
164
|
* Connect wallet using Dynamic widget
|
|
162
165
|
*/
|
|
163
|
-
var connectWallet = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
166
|
+
var connectWallet = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
164
167
|
var error_1;
|
|
165
168
|
return __generator(this, function (_a) {
|
|
166
169
|
switch (_a.label) {
|
|
@@ -168,11 +171,11 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
168
171
|
if (isConnecting || !showDynamicWidget || !dynamicSdkHasLoaded)
|
|
169
172
|
return [2 /*return*/];
|
|
170
173
|
if (dynamicWallet) {
|
|
171
|
-
logger.debug('Dynamic wallet already available; skipping widget open');
|
|
174
|
+
logger_1.logger.debug('Dynamic wallet already available; skipping widget open');
|
|
172
175
|
return [2 /*return*/];
|
|
173
176
|
}
|
|
174
177
|
setIsConnecting(true);
|
|
175
|
-
logger.debug('Starting wallet connection process');
|
|
178
|
+
logger_1.logger.debug('Starting wallet connection process');
|
|
176
179
|
_a.label = 1;
|
|
177
180
|
case 1:
|
|
178
181
|
_a.trys.push([1, 3, , 4]);
|
|
@@ -180,19 +183,19 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
180
183
|
return [4 /*yield*/, showDynamicWidget(true)];
|
|
181
184
|
case 2:
|
|
182
185
|
_a.sent();
|
|
183
|
-
logger.debug('Dynamic widget shown');
|
|
186
|
+
logger_1.logger.debug('Dynamic widget shown');
|
|
184
187
|
return [3 /*break*/, 4];
|
|
185
188
|
case 3:
|
|
186
189
|
error_1 = _a.sent();
|
|
187
190
|
dynamicWidgetRequestedRef.current = false;
|
|
188
191
|
setIsConnecting(false);
|
|
189
|
-
logger.error('Error showing Dynamic widget:', error_1);
|
|
192
|
+
logger_1.logger.error('Error showing Dynamic widget:', error_1);
|
|
190
193
|
return [3 /*break*/, 4];
|
|
191
194
|
case 4: return [2 /*return*/];
|
|
192
195
|
}
|
|
193
196
|
});
|
|
194
197
|
}); }, [isConnecting, showDynamicWidget, dynamicSdkHasLoaded, dynamicWallet]);
|
|
195
|
-
useEffect(function () {
|
|
198
|
+
(0, react_1.useEffect)(function () {
|
|
196
199
|
if (!dynamicSdkHasLoaded) {
|
|
197
200
|
return;
|
|
198
201
|
}
|
|
@@ -213,7 +216,7 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
213
216
|
flowActions.setErrorState(new Error('The client could not be initialized. Verify your Nord environment variables and try again.'));
|
|
214
217
|
}, [dynamicSdkHasLoaded, nord, flowActions]);
|
|
215
218
|
// Process nordUser changes
|
|
216
|
-
useEffect(function () {
|
|
219
|
+
(0, react_1.useEffect)(function () {
|
|
217
220
|
var _a;
|
|
218
221
|
if (!dynamicSdkHasLoaded || !nordUser || !dynamicWallet)
|
|
219
222
|
return;
|
|
@@ -237,7 +240,7 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
237
240
|
}
|
|
238
241
|
// Only run if we have processed a wallet
|
|
239
242
|
if (dynamicWallet) {
|
|
240
|
-
logger.debug('NordUser changed, checking account status');
|
|
243
|
+
logger_1.logger.debug('NordUser changed, checking account status');
|
|
241
244
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
242
245
|
var nordAccount, hasNordAccount, sessionId, sessionIdString, serverSessions, sessionMatchesServer, sessionIdKey, hasActiveSession, lastDepositRecord, transitionDestination, error_2;
|
|
243
246
|
var _a;
|
|
@@ -257,25 +260,25 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
257
260
|
serverSessions = (_a = nordAccount === null || nordAccount === void 0 ? void 0 : nordAccount.sessions) !== null && _a !== void 0 ? _a : {};
|
|
258
261
|
sessionMatchesServer = sessionIdString != null && Boolean(serverSessions === null || serverSessions === void 0 ? void 0 : serverSessions[sessionIdString]);
|
|
259
262
|
if (sessionIdString && !sessionMatchesServer) {
|
|
260
|
-
logger.debug('Stored session is missing on Nord; clearing cached session ID');
|
|
263
|
+
logger_1.logger.debug('Stored session is missing on Nord; clearing cached session ID');
|
|
261
264
|
if (typeof window !== 'undefined') {
|
|
262
265
|
try {
|
|
263
266
|
sessionIdKey = "n1_sessionId_".concat(dynamicWallet.address);
|
|
264
267
|
window.localStorage.removeItem(sessionIdKey);
|
|
265
268
|
}
|
|
266
269
|
catch (storageError) {
|
|
267
|
-
logger.warn('Failed to clear stale sessionId from localStorage', storageError);
|
|
270
|
+
logger_1.logger.warn('Failed to clear stale sessionId from localStorage', storageError);
|
|
268
271
|
}
|
|
269
272
|
}
|
|
270
273
|
}
|
|
271
274
|
hasActiveSession = sessionMatchesServer;
|
|
272
275
|
updateContext({ hasNordAccount: hasNordAccount, hasActiveSession: hasActiveSession });
|
|
273
|
-
if (state === OnboardingStep.CONNECTING_WALLET &&
|
|
276
|
+
if (state === types_1.OnboardingStep.CONNECTING_WALLET &&
|
|
274
277
|
!context.isDepositOnlyFlow) {
|
|
275
278
|
try {
|
|
276
|
-
lastDepositRecord = readLastDepositRecord(dynamicWallet.address);
|
|
279
|
+
lastDepositRecord = (0, depositStorage_1.readLastDepositRecord)(dynamicWallet.address);
|
|
277
280
|
if (lastDepositRecord) {
|
|
278
|
-
logger.debug('Resuming last deposit from local storage');
|
|
281
|
+
logger_1.logger.debug('Resuming last deposit from local storage');
|
|
279
282
|
flowActions.markDepositSuccess({
|
|
280
283
|
transactionId: lastDepositRecord.transactionId,
|
|
281
284
|
record: lastDepositRecord,
|
|
@@ -286,37 +289,37 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
286
289
|
}
|
|
287
290
|
}
|
|
288
291
|
catch (error) {
|
|
289
|
-
logger.error('Error restoring last deposit record:', error);
|
|
292
|
+
logger_1.logger.error('Error restoring last deposit record:', error);
|
|
290
293
|
}
|
|
291
294
|
}
|
|
292
295
|
transitionDestination = hasNordAccount
|
|
293
296
|
? hasActiveSession
|
|
294
|
-
? OnboardingStep.FINAL_SUCCESS
|
|
295
|
-
: OnboardingStep.AUTH_LOADING
|
|
296
|
-
: OnboardingStep.CHAIN_SELECTION;
|
|
297
|
+
? types_1.OnboardingStep.FINAL_SUCCESS
|
|
298
|
+
: types_1.OnboardingStep.AUTH_LOADING
|
|
299
|
+
: types_1.OnboardingStep.CHAIN_SELECTION;
|
|
297
300
|
if (hasNordAccount && hasActiveSession) {
|
|
298
301
|
setIsConnected(true);
|
|
299
302
|
}
|
|
300
303
|
closeDynamicWidget();
|
|
301
304
|
// Transition immediately without setTimeout
|
|
302
305
|
try {
|
|
303
|
-
logger.debug('Attempting transition to ' + transitionDestination);
|
|
304
|
-
if (transitionDestination === OnboardingStep.FINAL_SUCCESS) {
|
|
306
|
+
logger_1.logger.debug('Attempting transition to ' + transitionDestination);
|
|
307
|
+
if (transitionDestination === types_1.OnboardingStep.FINAL_SUCCESS) {
|
|
305
308
|
flowActions.completeFlow({
|
|
306
309
|
hasNordAccount: hasNordAccount,
|
|
307
310
|
hasActiveSession: hasActiveSession,
|
|
308
311
|
});
|
|
309
312
|
}
|
|
310
|
-
else if (transitionDestination === OnboardingStep.AUTH_LOADING) {
|
|
313
|
+
else if (transitionDestination === types_1.OnboardingStep.AUTH_LOADING) {
|
|
311
314
|
flowActions.requireAuth({ hasNordAccount: hasNordAccount });
|
|
312
315
|
}
|
|
313
316
|
else {
|
|
314
317
|
flowActions.goToChainSelection();
|
|
315
318
|
}
|
|
316
|
-
logger.debug('Transition to ' + transitionDestination + ' completed');
|
|
319
|
+
logger_1.logger.debug('Transition to ' + transitionDestination + ' completed');
|
|
317
320
|
}
|
|
318
321
|
catch (error) {
|
|
319
|
-
logger.error('Error during transition:', error);
|
|
322
|
+
logger_1.logger.error('Error during transition:', error);
|
|
320
323
|
}
|
|
321
324
|
finally {
|
|
322
325
|
setIsConnecting(false);
|
|
@@ -324,7 +327,7 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
324
327
|
return [3 /*break*/, 3];
|
|
325
328
|
case 2:
|
|
326
329
|
error_2 = _b.sent();
|
|
327
|
-
logger.error('Error checking account status:', error_2);
|
|
330
|
+
logger_1.logger.error('Error checking account status:', error_2);
|
|
328
331
|
closeDynamicWidget();
|
|
329
332
|
setIsConnecting(false);
|
|
330
333
|
return [3 /*break*/, 3];
|
|
@@ -347,23 +350,23 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
347
350
|
closeDynamicWidget,
|
|
348
351
|
]);
|
|
349
352
|
// Handle Dynamic widget closing while still connecting
|
|
350
|
-
useEffect(function () {
|
|
351
|
-
if (!isConnecting || state !== OnboardingStep.CONNECTING_WALLET) {
|
|
353
|
+
(0, react_1.useEffect)(function () {
|
|
354
|
+
if (!isConnecting || state !== types_1.OnboardingStep.CONNECTING_WALLET) {
|
|
352
355
|
return;
|
|
353
356
|
}
|
|
354
357
|
if (!showLogin) {
|
|
355
|
-
logger.debug('Wallet modal closed before connection completed; resetting state');
|
|
358
|
+
logger_1.logger.debug('Wallet modal closed before connection completed; resetting state');
|
|
356
359
|
closeDynamicWidget();
|
|
357
360
|
setIsConnecting(false);
|
|
358
361
|
}
|
|
359
362
|
}, [isConnecting, showLogin, state, closeDynamicWidget]);
|
|
360
363
|
// Handle connecting state changes in a separate effect
|
|
361
|
-
useEffect(function () {
|
|
364
|
+
(0, react_1.useEffect)(function () {
|
|
362
365
|
var currentState = state;
|
|
363
366
|
var prevState = prevStateRef.current;
|
|
364
367
|
// Only run if state has changed
|
|
365
368
|
if (currentState !== prevState) {
|
|
366
|
-
if (currentState !== OnboardingStep.CONNECTING_WALLET && isConnecting) {
|
|
369
|
+
if (currentState !== types_1.OnboardingStep.CONNECTING_WALLET && isConnecting) {
|
|
367
370
|
// If we're no longer in the connecting state, reset the connecting flag
|
|
368
371
|
setIsConnecting(false);
|
|
369
372
|
}
|
|
@@ -377,18 +380,20 @@ export var WalletConnectionProvider = function (_a) {
|
|
|
377
380
|
connectWallet: connectWallet,
|
|
378
381
|
disconnectWallet: disconnectWallet,
|
|
379
382
|
};
|
|
380
|
-
return (
|
|
383
|
+
return ((0, jsx_runtime_1.jsx)(WalletConnectionContext.Provider, { value: contextValue, children: children }));
|
|
381
384
|
};
|
|
385
|
+
exports.WalletConnectionProvider = WalletConnectionProvider;
|
|
382
386
|
/**
|
|
383
387
|
* Custom hook to use the wallet connection context
|
|
384
388
|
* @returns The wallet connection context value
|
|
385
389
|
* @throws Error if used outside of a WalletConnectionProvider
|
|
386
390
|
*/
|
|
387
|
-
|
|
388
|
-
var context = useContext(WalletConnectionContext);
|
|
391
|
+
var useWalletConnection = function () {
|
|
392
|
+
var context = (0, react_1.useContext)(WalletConnectionContext);
|
|
389
393
|
if (context === undefined) {
|
|
390
394
|
throw new Error('useWalletConnection must be used within a WalletConnectionProvider');
|
|
391
395
|
}
|
|
392
396
|
return context;
|
|
393
397
|
};
|
|
398
|
+
exports.useWalletConnection = useWalletConnection;
|
|
394
399
|
//# 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":"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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,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __assign = (this && this.__assign) || function () {
|
|
2
3
|
__assign = Object.assign || function(t) {
|
|
3
4
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -10,51 +11,53 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
11
|
return __assign.apply(this, arguments);
|
|
11
12
|
};
|
|
12
13
|
var _a;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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");
|
|
16
19
|
var buildDebugContext = function (overrides) {
|
|
17
20
|
if (overrides === void 0) { overrides = {}; }
|
|
18
|
-
return (__assign(__assign({}, initialOnboardingContext), overrides));
|
|
21
|
+
return (__assign(__assign({}, types_1.initialOnboardingContext), overrides));
|
|
19
22
|
};
|
|
20
|
-
|
|
21
|
-
_a[N1ModalViewMode.Connect] = {
|
|
22
|
-
state: OnboardingStep.CONNECTING_WALLET,
|
|
23
|
+
exports.DEBUG_VIEW_TO_FLOW = (_a = {},
|
|
24
|
+
_a[wallet_1.N1ModalViewMode.Connect] = {
|
|
25
|
+
state: types_1.OnboardingStep.CONNECTING_WALLET,
|
|
23
26
|
context: buildDebugContext(),
|
|
24
27
|
},
|
|
25
|
-
_a[N1ModalViewMode.ChainSelection] = {
|
|
26
|
-
state: OnboardingStep.CHAIN_SELECTION,
|
|
28
|
+
_a[wallet_1.N1ModalViewMode.ChainSelection] = {
|
|
29
|
+
state: types_1.OnboardingStep.CHAIN_SELECTION,
|
|
27
30
|
context: buildDebugContext({ selectedChain: null }),
|
|
28
31
|
},
|
|
29
|
-
_a[N1ModalViewMode.CreateSession] = {
|
|
30
|
-
state: OnboardingStep.AUTH_LOADING,
|
|
32
|
+
_a[wallet_1.N1ModalViewMode.CreateSession] = {
|
|
33
|
+
state: types_1.OnboardingStep.AUTH_LOADING,
|
|
31
34
|
context: buildDebugContext({
|
|
32
35
|
hasNordAccount: true,
|
|
33
36
|
hasActiveSession: false,
|
|
34
37
|
}),
|
|
35
38
|
},
|
|
36
|
-
_a[N1ModalViewMode.Signing] = {
|
|
37
|
-
state: OnboardingStep.DEPOSIT_PROGRESS,
|
|
39
|
+
_a[wallet_1.N1ModalViewMode.Signing] = {
|
|
40
|
+
state: types_1.OnboardingStep.DEPOSIT_PROGRESS,
|
|
38
41
|
context: buildDebugContext({
|
|
39
42
|
hasNordAccount: false,
|
|
40
43
|
hasActiveSession: false,
|
|
41
44
|
}),
|
|
42
45
|
},
|
|
43
|
-
_a[N1ModalViewMode.CreatingUser] = {
|
|
44
|
-
state: OnboardingStep.AMOUNT_INPUT,
|
|
46
|
+
_a[wallet_1.N1ModalViewMode.CreatingUser] = {
|
|
47
|
+
state: types_1.OnboardingStep.AMOUNT_INPUT,
|
|
45
48
|
context: buildDebugContext({
|
|
46
49
|
hasNordAccount: false,
|
|
47
50
|
hasActiveSession: false,
|
|
48
51
|
}),
|
|
49
52
|
},
|
|
50
|
-
_a[N1ModalViewMode.DepositSuccess] = {
|
|
51
|
-
state: OnboardingStep.DEPOSIT_SUCCESS,
|
|
53
|
+
_a[wallet_1.N1ModalViewMode.DepositSuccess] = {
|
|
54
|
+
state: types_1.OnboardingStep.DEPOSIT_SUCCESS,
|
|
52
55
|
context: buildDebugContext({
|
|
53
56
|
hasNordAccount: true,
|
|
54
57
|
hasActiveSession: true,
|
|
55
58
|
selectedChain: "solana-mainnet",
|
|
56
59
|
selectedChainId: "solana",
|
|
57
|
-
selectedChainNetwork: SolanaNetwork.MAINNET,
|
|
60
|
+
selectedChainNetwork: solana_1.SolanaNetwork.MAINNET,
|
|
58
61
|
amount: "1,250",
|
|
59
62
|
transactionId: "debug-tx-12345",
|
|
60
63
|
}),
|
|
@@ -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,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,8 +1,19 @@
|
|
|
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;
|
|
1
7
|
// Re-export provider hooks
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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; } });
|
|
6
16
|
// Default export the combined provider
|
|
7
|
-
|
|
17
|
+
var StateProvider_2 = require("./StateProvider");
|
|
18
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(StateProvider_2).default; } });
|
|
8
19
|
//# 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,
|
|
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"]}
|