@n1xyz/wallet-widget 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/Logic/transactionManager.d.ts +1 -1
  2. package/dist/Logic/transactionManager.js +1 -1
  3. package/dist/Logic/transactionManager.js.map +1 -1
  4. package/dist/Modal/LoadingFallback.js +1 -1
  5. package/dist/Modal/LoadingFallback.js.map +1 -1
  6. package/dist/Modal/NTSFlow/LoadingFallback.js +1 -1
  7. package/dist/Modal/NTSFlow/LoadingFallback.js.map +1 -1
  8. package/dist/Modal/NTSFlow/components/BackButton.js +2 -2
  9. package/dist/Modal/NTSFlow/components/BackButton.js.map +1 -1
  10. package/dist/Modal/NTSFlow/components/ModalHeader.js +1 -1
  11. package/dist/Modal/NTSFlow/components/ModalHeader.js.map +1 -1
  12. package/dist/Modal/NTSFlow/views/ConnectView.js +2 -2
  13. package/dist/Modal/NTSFlow/views/ConnectView.js.map +1 -1
  14. package/dist/Modal/NTSFlow/views/CreateSessionView.js +5 -5
  15. package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +1 -1
  16. package/dist/Modal/NTSFlow/views/CreateUserView.js +1 -1
  17. package/dist/Modal/NTSFlow/views/CreateUserView.js.map +1 -1
  18. package/dist/Modal/NTSFlow/views/NoWhitelistView.js +3 -3
  19. package/dist/Modal/NTSFlow/views/NoWhitelistView.js.map +1 -1
  20. package/dist/Modal/NTSFlow/views/SigningView.js +1 -1
  21. package/dist/Modal/NTSFlow/views/SigningView.js.map +1 -1
  22. package/dist/Modal/NordFlow/NordFlow.js +22 -228
  23. package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
  24. package/dist/Modal/NordFlow/components/ChainButton.js +5 -5
  25. package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -1
  26. package/dist/Modal/NordFlow/components/EVMChainsButton.js +4 -4
  27. package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -1
  28. package/dist/Modal/NordFlow/components/Header.d.ts +10 -0
  29. package/dist/Modal/NordFlow/components/Header.js +11 -0
  30. package/dist/Modal/NordFlow/components/Header.js.map +1 -0
  31. package/dist/Modal/NordFlow/components/ImageWithFallback.js +1 -1
  32. package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -1
  33. package/dist/Modal/NordFlow/components/LoadingSquares.js +1 -1
  34. package/dist/Modal/NordFlow/components/LoadingSquares.js.map +1 -1
  35. package/dist/Modal/NordFlow/components/MoreButton.js +4 -4
  36. package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -1
  37. package/dist/Modal/NordFlow/components/TransactionTable.js +7 -10
  38. package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
  39. package/dist/Modal/NordFlow/components/WaitingMessage.js +1 -1
  40. package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -1
  41. package/dist/Modal/NordFlow/components/index.d.ts +1 -0
  42. package/dist/Modal/NordFlow/components/index.js +1 -0
  43. package/dist/Modal/NordFlow/components/index.js.map +1 -1
  44. package/dist/Modal/NordFlow/constants.js +116 -95
  45. package/dist/Modal/NordFlow/constants.js.map +1 -1
  46. package/dist/Modal/NordFlow/context/DepositContext.d.ts +27 -0
  47. package/dist/Modal/NordFlow/context/DepositContext.js +308 -0
  48. package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -0
  49. package/dist/Modal/NordFlow/context/FlowContext.d.ts +23 -0
  50. package/dist/Modal/NordFlow/context/FlowContext.js +125 -0
  51. package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -0
  52. package/dist/Modal/NordFlow/context/NordProvider.d.ts +10 -0
  53. package/dist/Modal/NordFlow/context/NordProvider.js +14 -0
  54. package/dist/Modal/NordFlow/context/NordProvider.js.map +1 -0
  55. package/dist/Modal/NordFlow/context/WalletConnectContext.d.ts +20 -0
  56. package/dist/Modal/NordFlow/context/WalletConnectContext.js +214 -0
  57. package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -0
  58. package/dist/Modal/NordFlow/context/deposit/types.d.ts +26 -0
  59. package/dist/Modal/NordFlow/context/deposit/types.js +2 -0
  60. package/dist/Modal/NordFlow/context/deposit/types.js.map +1 -0
  61. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.d.ts +7 -0
  62. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js +113 -0
  63. package/dist/Modal/NordFlow/context/deposit/useDepositAuth.js.map +1 -0
  64. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.d.ts +20 -0
  65. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js +235 -0
  66. package/dist/Modal/NordFlow/context/deposit/useDepositTransaction.js.map +1 -0
  67. package/dist/Modal/NordFlow/context/index.d.ts +5 -0
  68. package/dist/Modal/NordFlow/context/index.js +8 -0
  69. package/dist/Modal/NordFlow/context/index.js.map +1 -0
  70. package/dist/Modal/NordFlow/hooks/index.d.ts +3 -5
  71. package/dist/Modal/NordFlow/hooks/index.js +3 -5
  72. package/dist/Modal/NordFlow/hooks/index.js.map +1 -1
  73. package/dist/Modal/NordFlow/hooks/useDepositFlow.js +2 -4
  74. package/dist/Modal/NordFlow/hooks/useDepositFlow.js.map +1 -1
  75. package/dist/Modal/NordFlow/hooks/useNordInstance.d.ts +0 -6
  76. package/dist/Modal/NordFlow/hooks/useNordInstance.js +2 -358
  77. package/dist/Modal/NordFlow/hooks/useNordInstance.js.map +1 -1
  78. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.d.ts +0 -1
  79. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js +0 -1
  80. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js.map +1 -1
  81. package/dist/Modal/NordFlow/screens/00-IdleScreen.d.ts +6 -0
  82. package/dist/Modal/NordFlow/screens/00-IdleScreen.js +9 -0
  83. package/dist/Modal/NordFlow/screens/00-IdleScreen.js.map +1 -0
  84. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -6
  85. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +12 -6
  86. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
  87. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +1 -5
  88. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +13 -16
  89. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +1 -1
  90. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.d.ts +1 -7
  91. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +11 -9
  92. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +1 -1
  93. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.d.ts +1 -13
  94. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +59 -31
  95. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -1
  96. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.d.ts +1 -6
  97. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +9 -4
  98. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +1 -1
  99. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.d.ts +1 -8
  100. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +18 -7
  101. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +1 -1
  102. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.d.ts +1 -6
  103. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +15 -121
  104. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +1 -1
  105. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.d.ts +1 -1
  106. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +10 -5
  107. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -1
  108. package/dist/Modal/NordFlow/screens/09-ErrorScreen.d.ts +1 -7
  109. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +9 -9
  110. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +1 -1
  111. package/dist/Modal/NordFlow/screens/index.d.ts +1 -0
  112. package/dist/Modal/NordFlow/screens/index.js +1 -0
  113. package/dist/Modal/NordFlow/screens/index.js.map +1 -1
  114. package/dist/Modal/NordFlow/types.d.ts +0 -5
  115. package/dist/Modal/NordFlow/types.js +0 -1
  116. package/dist/Modal/NordFlow/types.js.map +1 -1
  117. package/dist/Modal/NordFlow/utils/index.d.ts +0 -1
  118. package/dist/Modal/NordFlow/utils/index.js +0 -1
  119. package/dist/Modal/NordFlow/utils/index.js.map +1 -1
  120. package/dist/Modal/Sidebar/N1Sidebar.js +10 -10
  121. package/dist/Modal/Sidebar/N1Sidebar.js.map +1 -1
  122. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js +5 -5
  123. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js.map +1 -1
  124. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js +3 -3
  125. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js.map +1 -1
  126. package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js +2 -2
  127. package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js.map +1 -1
  128. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js +2 -2
  129. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js.map +1 -1
  130. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js +1 -1
  131. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js.map +1 -1
  132. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js +4 -4
  133. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js.map +1 -1
  134. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js +6 -6
  135. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js.map +1 -1
  136. package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js +1 -1
  137. package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js.map +1 -1
  138. package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js +3 -3
  139. package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js.map +1 -1
  140. package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js +7 -7
  141. package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js.map +1 -1
  142. package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js +13 -13
  143. package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js.map +1 -1
  144. package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js +1 -1
  145. package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js.map +1 -1
  146. package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js +2 -2
  147. package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js.map +1 -1
  148. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js +1 -1
  149. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js.map +1 -1
  150. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js +5 -5
  151. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js.map +1 -1
  152. package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js +1 -1
  153. package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js.map +1 -1
  154. package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js +5 -5
  155. package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js.map +1 -1
  156. package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js +4 -4
  157. package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js.map +1 -1
  158. package/dist/Provider/LazyWalletProvider.js +2 -0
  159. package/dist/Provider/LazyWalletProvider.js.map +1 -1
  160. package/dist/Provider/N1WalletProvider.js +48 -63
  161. package/dist/Provider/N1WalletProvider.js.map +1 -1
  162. package/dist/Provider/WalletErrorBoundary.d.ts +10 -0
  163. package/dist/Provider/WalletErrorBoundary.js +39 -0
  164. package/dist/Provider/WalletErrorBoundary.js.map +1 -0
  165. package/dist/Provider/hooks/useNordUserInitialization.d.ts +20 -0
  166. package/dist/Provider/hooks/useNordUserInitialization.js +293 -0
  167. package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -0
  168. package/dist/Provider/types.d.ts +2 -0
  169. package/dist/Provider/types.js.map +1 -1
  170. package/dist/Provider/useN1WalletProvider.d.ts +37 -0
  171. package/dist/Provider/useN1WalletProvider.js +398 -0
  172. package/dist/Provider/useN1WalletProvider.js.map +1 -0
  173. package/dist/components/QRCodeLoader.js +1 -1
  174. package/dist/components/QRCodeLoader.js.map +1 -1
  175. package/dist/components/logos/EVMChainsGroup.js +1 -1
  176. package/dist/components/logos/EVMChainsGroup.js.map +1 -1
  177. package/dist/components/logos/MoreChainsGroup.js +1 -1
  178. package/dist/components/logos/MoreChainsGroup.js.map +1 -1
  179. package/dist/main.css +1 -1
  180. package/package.json +1 -1
@@ -0,0 +1,235 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { useCallback, useState } from 'react';
38
+ import { getExplorerUrl } from '../../../../Logic/transactionManager';
39
+ import { useN1WalletContext, useN1WalletInternalContext } from '../../../../Provider/hooks';
40
+ import { N1SessionMode } from '../../../../Provider/types';
41
+ import { logger } from '../../../../utils/logger';
42
+ import { AVAILABLE_CHAINS } from '../../constants';
43
+ import { FlowState } from '../../types';
44
+ export var useDepositTransaction = function (selectedChain, initialAmount, transition, updateContext) {
45
+ // transaction states
46
+ var _a = useState(initialAmount), amount = _a[0], setAmount = _a[1];
47
+ var _b = useState(false), isDepositing = _b[0], setIsDepositing = _b[1];
48
+ var _c = useState(null), transactionId = _c[0], setTransactionId = _c[1];
49
+ var _d = useState(null), transactionResult = _d[0], setTransactionResult = _d[1];
50
+ // Get wallet context
51
+ var _e = useN1WalletContext(), address = _e.address, nord = _e.nord, signMessageWithWalletKey = _e.signMessageWithWalletKey, signMessageWithSessionKey = _e.signMessageWithSessionKey, nordUser = _e.nordUser;
52
+ var sessionMode = useN1WalletInternalContext().sessionMode;
53
+ /**
54
+ * Handle an error by transitioning to error state
55
+ */
56
+ var handleError = useCallback(function (error) {
57
+ logger.error('Flow error:', error);
58
+ transition(FlowState.ERROR, { error: error });
59
+ }, [transition]);
60
+ /**
61
+ * Update amount for deposit
62
+ */
63
+ var updateAmount = useCallback(function (newAmount) {
64
+ setAmount(newAmount);
65
+ updateContext({ amount: newAmount });
66
+ }, [updateContext]);
67
+ /**
68
+ * Start deposit process
69
+ */
70
+ var startDeposit = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
71
+ var usdcToken, txId, accountInitialized, i, exists, result, depositError_1, errorMessage;
72
+ return __generator(this, function (_a) {
73
+ switch (_a.label) {
74
+ case 0:
75
+ if (isDepositing)
76
+ return [2 /*return*/];
77
+ logger.debug('Starting deposit process');
78
+ if (!amount || parseFloat(amount) <= 0) {
79
+ handleError(new Error('Invalid amount'));
80
+ return [2 /*return*/];
81
+ }
82
+ setIsDepositing(true);
83
+ transition(FlowState.DEPOSIT_PROGRESS);
84
+ _a.label = 1;
85
+ case 1:
86
+ _a.trys.push([1, 8, , 9]);
87
+ usdcToken = nord.tokens.find(function (t) { return t.symbol === 'USDC'; });
88
+ return [4 /*yield*/, nordUser.depositSpl(parseFloat(amount), usdcToken.tokenId)];
89
+ case 2:
90
+ txId = _a.sent();
91
+ accountInitialized = false;
92
+ i = 0;
93
+ _a.label = 3;
94
+ case 3:
95
+ if (!(i < 70)) return [3 /*break*/, 7];
96
+ return [4 /*yield*/, (nord === null || nord === void 0 ? void 0 : nord.accountExists(address))];
97
+ case 4:
98
+ exists = _a.sent();
99
+ if (exists) {
100
+ accountInitialized = true;
101
+ return [3 /*break*/, 7];
102
+ }
103
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 5000); })];
104
+ case 5:
105
+ _a.sent();
106
+ _a.label = 6;
107
+ case 6:
108
+ i++;
109
+ return [3 /*break*/, 3];
110
+ case 7:
111
+ if (!accountInitialized) {
112
+ throw new Error('Account failed to intialize on N1.');
113
+ }
114
+ logger.debug('Deposit successful using Nord-TS', txId);
115
+ result = {
116
+ success: true,
117
+ transactionId: txId,
118
+ amount: amount,
119
+ tokenSymbol: 'USDC',
120
+ fromAddress: address || 'Your Wallet',
121
+ toAddress: 'Exchange Account',
122
+ networkName: selectedChain,
123
+ status: 'Completed',
124
+ explorerUrl: getExplorerUrl(txId, selectedChain),
125
+ };
126
+ // Update state with transaction result
127
+ setTransactionId(txId);
128
+ setTransactionResult(result);
129
+ logger.debug('Transaction completed successfully');
130
+ transition(FlowState.DEPOSIT_SUCCESS, { transactionId: txId, hasNordAccount: true });
131
+ return [3 /*break*/, 9];
132
+ case 8:
133
+ depositError_1 = _a.sent();
134
+ logger.warn('Error using depositSpl, falling back to mock implementation:', depositError_1);
135
+ setIsDepositing(false);
136
+ errorMessage = depositError_1 instanceof Error
137
+ ? depositError_1.message
138
+ : 'Failed to process deposit';
139
+ transition(FlowState.AMOUNT_INPUT, {
140
+ depositError: errorMessage
141
+ });
142
+ return [2 /*return*/]; // Exit early
143
+ case 9: return [2 /*return*/];
144
+ }
145
+ });
146
+ }); }, [
147
+ isDepositing,
148
+ selectedChain,
149
+ amount,
150
+ address,
151
+ nord,
152
+ nordUser,
153
+ transition,
154
+ handleError,
155
+ ]);
156
+ /**
157
+ * Complete the deposit process and move to the next screen
158
+ */
159
+ var completeDeposit = useCallback(function () {
160
+ // Check if user has an active session to determine the next state
161
+ var hasActiveSession = updateContext.hasActiveSession;
162
+ if (hasActiveSession) {
163
+ // If user has an active session, go directly to FINAL_SUCCESS
164
+ transition(FlowState.FINAL_SUCCESS, { hasNordAccount: true, hasActiveSession: true });
165
+ }
166
+ else {
167
+ // Check if there's a sessionId stored in localStorage
168
+ var sessionIdKey = "n1_sessionId_".concat(address);
169
+ var storedSessionId = localStorage.getItem(sessionIdKey);
170
+ if (storedSessionId !== null) {
171
+ // If we have a sessionId in localStorage (even if it's 0), go directly to FINAL_SUCCESS
172
+ transition(FlowState.FINAL_SUCCESS, { hasNordAccount: true, hasActiveSession: true });
173
+ }
174
+ else {
175
+ // If user doesn't have an active session and no sessionId in localStorage, go to NORD_AUTH
176
+ transition(FlowState.AUTH_LOADING, { hasNordAccount: true });
177
+ }
178
+ }
179
+ }, [address, transition, updateContext]);
180
+ /**
181
+ * Get transaction details for display
182
+ */
183
+ var getTransactionDetails = useCallback(function () {
184
+ var _a;
185
+ // Ensure we have a valid session mode
186
+ var currentSessionMode = sessionMode !== null && sessionMode !== void 0 ? sessionMode : N1SessionMode.NTS;
187
+ // Determine account type based on session mode
188
+ var accountType = currentSessionMode === N1SessionMode.Nord
189
+ ? 'Exchange Account'
190
+ : 'NTS Account';
191
+ if (!transactionResult) {
192
+ // If we don't have a transaction result yet, return default values
193
+ return {
194
+ amount: amount || '0',
195
+ tx: transactionId || 'Processing...',
196
+ from: address || 'Your Wallet',
197
+ to: accountType,
198
+ network: selectedChain
199
+ ? ((_a = AVAILABLE_CHAINS.find(function (chain) { return chain.id === selectedChain; })) === null || _a === void 0 ? void 0 : _a.name) || selectedChain
200
+ : 'Unknown',
201
+ status: 'Processing',
202
+ explorerUrl: '',
203
+ };
204
+ }
205
+ // Return actual transaction details
206
+ return {
207
+ amount: "".concat(transactionResult.amount, " ").concat(transactionResult.tokenSymbol),
208
+ tx: transactionResult.transactionId,
209
+ from: transactionResult.fromAddress,
210
+ to: transactionResult.toAddress,
211
+ network: transactionResult.networkName,
212
+ status: transactionResult.status,
213
+ explorerUrl: transactionResult.explorerUrl ||
214
+ getExplorerUrl(transactionResult.transactionId, selectedChain || ''),
215
+ };
216
+ }, [
217
+ transactionResult,
218
+ amount,
219
+ transactionId,
220
+ address,
221
+ sessionMode,
222
+ selectedChain,
223
+ ]);
224
+ return {
225
+ amount: amount,
226
+ isDepositing: isDepositing,
227
+ transactionId: transactionId,
228
+ transactionResult: transactionResult,
229
+ updateAmount: updateAmount,
230
+ startDeposit: startDeposit,
231
+ completeDeposit: completeDeposit,
232
+ getTransactionDetails: getTransactionDetails
233
+ };
234
+ };
235
+ //# sourceMappingURL=useDepositTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDepositTransaction.js","sourceRoot":"","sources":["../../../../../src/Modal/NordFlow/context/deposit/useDepositTransaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useState } from 'react';\nimport { \n getExplorerUrl, \n TransactionResult \n} from '../../../../Logic/transactionManager';\nimport { \n useN1WalletContext, \n useN1WalletInternalContext \n} from '../../../../Provider/hooks';\nimport { N1SessionMode } from '../../../../Provider/types';\nimport { logger } from '../../../../utils/logger';\nimport { AVAILABLE_CHAINS } from '../../constants';\nimport { FlowState } from '../../types';\n\nexport const useDepositTransaction = (\n selectedChain: string | null,\n initialAmount: string,\n transition: (state: FlowState, context?: any) => void,\n updateContext: (context: any) => void\n) => {\n // transaction states\n const [amount, setAmount] = useState(initialAmount);\n const [isDepositing, setIsDepositing] = useState(false);\n const [transactionId, setTransactionId] = useState<string | null>(null);\n const [transactionResult, setTransactionResult] = useState<TransactionResult | null>(null);\n\n // Get wallet context\n const {\n address,\n nord,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n nordUser,\n } = useN1WalletContext();\n const { sessionMode } = useN1WalletInternalContext();\n\n /**\n * Handle an error by transitioning to error state\n */\n const handleError = useCallback(\n (error: Error) => {\n logger.error('Flow error:', error);\n transition(FlowState.ERROR, { error });\n },\n [transition]\n );\n\n /**\n * Update amount for deposit\n */\n const updateAmount = useCallback(\n (newAmount: string) => {\n setAmount(newAmount);\n updateContext({ amount: newAmount });\n },\n [updateContext]\n );\n\n /**\n * Start deposit process\n */\n const startDeposit = useCallback(async () => {\n if (isDepositing) return;\n\n logger.debug('Starting deposit process');\n\n if (!amount || parseFloat(amount) <= 0) {\n handleError(new Error('Invalid amount'));\n return;\n }\n\n setIsDepositing(true);\n transition(FlowState.DEPOSIT_PROGRESS);\n\n try {\n const usdcToken = nord!.tokens.find((t: any) => t.symbol === 'USDC');\n\n const txId = await nordUser.depositSpl(\n parseFloat(amount),\n usdcToken!.tokenId\n );\n\n let accountInitialized = false;\n for (let i = 0; i < 70; i++) {\n const exists = await nord?.accountExists(address);\n if (exists) {\n accountInitialized = true;\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, 5000));\n }\n\n if (!accountInitialized) {\n throw new Error('Account failed to intialize on N1.');\n }\n\n logger.debug('Deposit successful using Nord-TS', txId);\n\n // Create transaction result object immediately after successful deposit\n const result: TransactionResult = {\n success: true,\n transactionId: txId,\n amount,\n tokenSymbol: 'USDC',\n fromAddress: address || 'Your Wallet',\n toAddress: 'Exchange Account',\n networkName: selectedChain!,\n status: 'Completed',\n explorerUrl: getExplorerUrl(txId, selectedChain!),\n };\n\n // Update state with transaction result\n setTransactionId(txId);\n setTransactionResult(result);\n logger.debug('Transaction completed successfully');\n transition(FlowState.DEPOSIT_SUCCESS, { transactionId: txId, hasNordAccount: true });\n } catch (depositError) {\n logger.warn('Error using depositSpl, falling back to mock implementation:', depositError);\n setIsDepositing(false);\n const errorMessage = depositError instanceof Error\n ? depositError.message\n : 'Failed to process deposit';\n\n transition(FlowState.AMOUNT_INPUT, {\n depositError: errorMessage\n });\n return; // Exit early\n }\n }, [\n isDepositing,\n selectedChain,\n amount,\n address,\n nord,\n nordUser,\n transition,\n handleError,\n ]);\n\n /**\n * Complete the deposit process and move to the next screen\n */\n const completeDeposit = useCallback(() => {\n // Check if user has an active session to determine the next state\n const hasActiveSession = updateContext.hasActiveSession;\n \n if (hasActiveSession) {\n // If user has an active session, go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS, { hasNordAccount: true, hasActiveSession: true });\n } else {\n // Check if there's a sessionId stored in localStorage\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n\n if (storedSessionId !== null) {\n // If we have a sessionId in localStorage (even if it's 0), go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS, { hasNordAccount: true, hasActiveSession: true });\n } else {\n // If user doesn't have an active session and no sessionId in localStorage, go to NORD_AUTH\n transition(FlowState.AUTH_LOADING, { hasNordAccount: true });\n }\n }\n }, [address, transition, updateContext]);\n\n /**\n * Get transaction details for display\n */\n const getTransactionDetails = useCallback(() => {\n // Ensure we have a valid session mode\n const currentSessionMode = sessionMode ?? N1SessionMode.NTS;\n\n // Determine account type based on session mode\n const accountType =\n currentSessionMode === N1SessionMode.Nord\n ? 'Exchange Account'\n : 'NTS Account';\n\n if (!transactionResult) {\n // If we don't have a transaction result yet, return default values\n return {\n amount: amount || '0',\n tx: transactionId || 'Processing...',\n from: address || 'Your Wallet',\n to: accountType,\n network: selectedChain\n ? AVAILABLE_CHAINS.find((chain) => chain.id === selectedChain)\n ?.name || selectedChain\n : 'Unknown',\n status: 'Processing',\n explorerUrl: '',\n };\n }\n\n // Return actual transaction details\n return {\n amount: `${transactionResult.amount} ${transactionResult.tokenSymbol}`,\n tx: transactionResult.transactionId,\n from: transactionResult.fromAddress,\n to: transactionResult.toAddress,\n network: transactionResult.networkName,\n status: transactionResult.status,\n explorerUrl:\n transactionResult.explorerUrl ||\n getExplorerUrl(transactionResult.transactionId, selectedChain || ''),\n };\n }, [\n transactionResult,\n amount,\n transactionId,\n address,\n sessionMode,\n selectedChain,\n ]);\n\n return {\n amount,\n isDepositing,\n transactionId,\n transactionResult,\n updateAmount,\n startDeposit,\n completeDeposit,\n getTransactionDetails\n };\n}; "]}
@@ -0,0 +1,5 @@
1
+ export { FlowStateProvider, useFlowStateContext } from './FlowContext';
2
+ export { WalletConnectProvider, useWalletConnectContext } from './WalletConnectContext';
3
+ export { DepositProvider, useDepositContext } from './DepositContext';
4
+ export { NordProvider } from './NordProvider';
5
+ export { default } from './NordProvider';
@@ -0,0 +1,8 @@
1
+ // Re-export context providers
2
+ export { FlowStateProvider, useFlowStateContext } from './FlowContext';
3
+ export { WalletConnectProvider, useWalletConnectContext } from './WalletConnectContext';
4
+ export { DepositProvider, useDepositContext } from './DepositContext';
5
+ export { NordProvider } from './NordProvider';
6
+ // Default export the combined provider
7
+ export { default } from './NordProvider';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/context/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Re-export context providers\nexport { FlowStateProvider, useFlowStateContext } from './FlowContext';\nexport { WalletConnectProvider, useWalletConnectContext } from './WalletConnectContext';\nexport { DepositProvider, useDepositContext } from './DepositContext';\nexport { NordProvider } from './NordProvider';\n\n// Default export the combined provider\nexport { default } from './NordProvider'; "]}
@@ -1,5 +1,3 @@
1
- export * from './useDepositFlow';
2
- export * from './useNordWalletConnect';
3
- export * from './useInterruptHandler';
4
- export * from './useFlowState';
5
- export * from './useNordInstance';
1
+ export * from '../context/FlowContext';
2
+ export * from '../context/WalletConnectContext';
3
+ export * from '../context/DepositContext';
@@ -1,6 +1,4 @@
1
- export * from './useDepositFlow';
2
- export * from './useNordWalletConnect';
3
- export * from './useInterruptHandler';
4
- export * from './useFlowState';
5
- export * from './useNordInstance';
1
+ export * from '../context/FlowContext';
2
+ export * from '../context/WalletConnectContext';
3
+ export * from '../context/DepositContext';
6
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC","sourcesContent":["export * from './useDepositFlow';\nexport * from './useNordWalletConnect';\nexport * from './useInterruptHandler';\nexport * from './useFlowState';\nexport * from './useNordInstance';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC","sourcesContent":["export * from '../context/FlowContext';\nexport * from '../context/WalletConnectContext';\nexport * from '../context/DepositContext';\n"]}
@@ -41,7 +41,6 @@ import { getExplorerUrl, } from '../../../Logic/transactionManager';
41
41
  import { useN1WalletContext, useN1WalletInternalContext, } from '../../../Provider/hooks';
42
42
  import { N1SessionMode } from '../../../Provider/types';
43
43
  import { isNordConfigured } from '../utils/nordUtils';
44
- import { useNordInstance } from './useNordInstance';
45
44
  import { logger } from '../../../utils/logger';
46
45
  /**
47
46
  * Hook for handling the deposit flow
@@ -54,7 +53,6 @@ export var useDepositFlow = function (options) {
54
53
  var state = options.state, context = options.context, transition = options.transition, handleError = options.handleError;
55
54
  var _b = useN1WalletContext(), address = _b.address, nord = _b.nord, signMessageWithWalletKey = _b.signMessageWithWalletKey, signMessageWithSessionKey = _b.signMessageWithSessionKey, nordUser = _b.nordUser;
56
55
  var sessionMode = useN1WalletInternalContext().sessionMode;
57
- var instanceNordUser = useNordInstance().nordUser;
58
56
  var _c = useState(context.selectedChain), selectedChain = _c[0], setSelectedChain = _c[1];
59
57
  var _d = useState(context.amount), amount = _d[0], setAmount = _d[1];
60
58
  var _e = useState(false), isDepositing = _e[0], setIsDepositing = _e[1];
@@ -62,8 +60,8 @@ export var useDepositFlow = function (options) {
62
60
  var _g = useState(null), transactionResult = _g[0], setTransactionResult = _g[1];
63
61
  // Use refs to track previous values
64
62
  var prevContextRef = useRef(context);
65
- // Use the nordUser from context, falling back to the one from useNordInstance
66
- var currentNordUser = nordUser || instanceNordUser;
63
+ // Use the nordUser from context
64
+ var currentNordUser = nordUser;
67
65
  // Handle transaction ID changes
68
66
  useEffect(function () {
69
67
  if (!txId)
@@ -1 +1 @@
1
- {"version":3,"file":"useDepositFlow.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useDepositFlow.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { FlowContext, FlowState } from '../types';\nimport { AVAILABLE_CHAINS } from '../constants';\nimport {\n getExplorerUrl,\n TransactionResult,\n} from '../../../Logic/transactionManager';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { N1SessionMode } from '../../../Provider/types';\nimport { isNordConfigured } from '../utils/nordUtils';\nimport { useNordInstance } from './useNordInstance';\nimport { logger } from '../../../utils/logger';\n\n/**\n * Hook for handling the deposit flow\n *\n * @param options Configuration options\n * @returns Deposit flow methods and state\n */\nexport const useDepositFlow = (options: {\n /**\n * Flow state\n */\n state: FlowState;\n /**\n * Flow context\n */\n context: FlowContext;\n /**\n * Transition to a new state\n */\n transition: (\n newState: FlowState,\n contextUpdates?: Partial<FlowContext>\n ) => boolean;\n /**\n * Handle errors\n */\n handleError: (error: Error) => void;\n /**\n * Update context\n */\n updateContext?: (contextUpdates: Partial<FlowContext>) => void;\n}) => {\n const [txId, setTxId] = useState<string | null>(null);\n const { state, context, transition, handleError } = options;\n const {\n address,\n nord,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n nordUser,\n } = useN1WalletContext();\n const { sessionMode } = useN1WalletInternalContext();\n const { nordUser: instanceNordUser } = useNordInstance();\n\n const [selectedChain, setSelectedChain] = useState<string | null>(\n context.selectedChain\n );\n const [amount, setAmount] = useState(context.amount);\n const [isDepositing, setIsDepositing] = useState(false);\n const [transactionId, setTransactionId] = useState<string | null>(\n context.transactionId\n );\n const [transactionResult, setTransactionResult] =\n useState<TransactionResult | null>(null);\n\n // Use refs to track previous values\n const prevContextRef = useRef(context);\n \n // Use the nordUser from context, falling back to the one from useNordInstance\n const currentNordUser = nordUser || instanceNordUser;\n\n // Handle transaction ID changes\n useEffect(() => {\n if (!txId) return;\n \n // Transition to the appropriate screen based on whether user has an active session\n if (context.hasActiveSession) {\n // If user has an active session, go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS, { transactionId: txId });\n } else {\n // Check if there's a sessionId stored in localStorage\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n\n if (storedSessionId !== null) {\n // If we have a sessionId in localStorage (even if it's 0), go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS, { transactionId: txId });\n } else {\n // If user doesn't have an active session and no sessionId in localStorage, go to DEPOSIT_SUCCESS first\n transition(FlowState.DEPOSIT_SUCCESS, { transactionId: txId });\n }\n }\n setTxId(null);\n }, [txId, transition, context.hasActiveSession, address]);\n\n /**\n * Select a chain for deposit\n */\n const selectChain = useCallback(\n (chainId: string) => {\n const validChain = AVAILABLE_CHAINS.find((chain) => chain.id === chainId);\n\n if (!validChain) {\n handleError(new Error(`Invalid chain: ${chainId}`));\n return;\n }\n\n setSelectedChain(chainId);\n transition(FlowState.AMOUNT_INPUT, { selectedChain: chainId });\n },\n [transition, handleError]\n );\n\n /**\n * Update amount for deposit\n */\n const updateAmount = useCallback(\n (newAmount: string) => {\n setAmount(newAmount);\n // Only update the context without transitioning to the same state\n // This prevents the \"Transition from AMOUNT_INPUT to AMOUNT_INPUT is not allowed\" error\n if (state === FlowState.AMOUNT_INPUT) {\n // Use updateContext function if available to update without state transition\n if (options.updateContext) {\n options.updateContext({ amount: newAmount });\n }\n } else {\n transition(state, { amount: newAmount });\n }\n },\n [state, transition, options.updateContext]\n );\n\n /**\n * Start deposit process\n */\n const startDeposit = useCallback(async () => {\n if (isDepositing) return;\n\n logger.debug('Starting deposit process');\n // Validate input\n if (!selectedChain) {\n handleError(new Error('No chain selected'));\n return;\n }\n\n if (!amount || parseFloat(amount) <= 0) {\n handleError(new Error('Invalid amount'));\n return;\n }\n\n if (!address) {\n handleError(new Error('No wallet address found'));\n return;\n }\n\n setIsDepositing(true);\n transition(FlowState.DEPOSIT_PROGRESS);\n\n try {\n // Ensure we have a valid session mode\n const currentSessionMode = sessionMode ?? N1SessionMode.NTS;\n\n // Use Nord-TS if available\n let txId = '';\n\n if (currentNordUser && nord && isNordConfigured(nord)) {\n try {\n // Find the USDC token\n const usdcToken = nord.tokens.find((t: any) => t.symbol === 'USDC');\n if (!usdcToken) {\n throw new Error('USDC token not found');\n }\n\n // Attempt to perform the deposit using Nord-TS\n // Since we don't know the exact API, we'll use a try-catch approach\n try {\n // Try depositSpl method if it exists\n if (typeof currentNordUser.depositSpl === 'function') {\n txId = await currentNordUser.depositSpl(\n parseFloat(amount),\n usdcToken.tokenId\n );\n\n let accountInitialized = false;\n for (let i = 0; i < 70; i++) {\n const exists = await nord?.accountExists(address);\n if (exists) {\n accountInitialized = true;\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, 5000));\n }\n\n if (!accountInitialized) {\n throw new Error('Account failed to intialize on N1.');\n }\n\n logger.debug('Deposit successful using Nord-TS', txId);\n\n // Make sure we have a valid chain ID\n if (selectedChain) {\n // Create transaction result object immediately after successful deposit\n const result: TransactionResult = {\n success: true,\n transactionId: txId,\n amount,\n tokenSymbol: 'USDC', // Default to USDC for now\n fromAddress: address || 'Your Wallet',\n toAddress:\n currentSessionMode === N1SessionMode.Nord\n ? 'Exchange Account'\n : 'NTS Account',\n networkName:\n AVAILABLE_CHAINS.find((chain) => chain.id === selectedChain)\n ?.name || selectedChain,\n status: 'Completed',\n explorerUrl: getExplorerUrl(txId, selectedChain),\n };\n\n // Update state with transaction result\n setTransactionId(txId);\n setTransactionResult(result);\n\n logger.debug('Transaction completed successfully');\n setTxId(txId);\n return; // Exit the function early since we've handled everything\n } else {\n throw new Error('No chain selected for deposit');\n }\n } else {\n // If depositSpl doesn't exist, throw an error to fall back to mock implementation\n throw new Error('depositSpl method not available');\n }\n } catch (depositError) {\n logger.warn(\n 'Error using depositSpl, falling back to mock implementation:',\n depositError\n );\n setIsDepositing(false);\n \n // Transition back to AMOUNT_INPUT with the error message\n const errorMessage = depositError instanceof Error \n ? depositError.message \n : 'Failed to process deposit';\n \n transition(FlowState.AMOUNT_INPUT, { \n depositError: errorMessage \n });\n return; // Exit early\n }\n } catch (error) {\n logger.error('Error using Nord-TS for deposit:', error);\n throw error;\n }\n } else {\n logger.debug('Nord configuration issue:', {\n hasNord: !!nord,\n isConfigured: nord ? isNordConfigured(nord) : false,\n hasAddress: !!address,\n hasWalletSignFn: !!signMessageWithWalletKey,\n hasSessionSignFn: !!signMessageWithSessionKey,\n });\n\n throw new Error('Nord is not configured or user is not initialized');\n }\n } catch (error) {\n setIsDepositing(false);\n handleError(\n error instanceof Error ? error : new Error('Failed to process deposit')\n );\n }\n }, [\n isDepositing,\n selectedChain,\n amount,\n address,\n sessionMode,\n transition,\n handleError,\n nord,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n currentNordUser,\n ]);\n\n /**\n * Complete the deposit process and move to the next screen\n */\n const completeDeposit = useCallback(() => {\n // Check if user has an active session to determine the next state\n if (context.hasActiveSession) {\n // If user has an active session, go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS);\n } else {\n // Check if there's a sessionId stored in localStorage\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n\n if (storedSessionId !== null) {\n // If we have a sessionId in localStorage (even if it's 0), go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS);\n } else {\n // If user doesn't have an active session and no sessionId in localStorage, go to NORD_AUTH\n transition(FlowState.AUTH_LOADING);\n }\n }\n }, [context.hasActiveSession, transition, address]);\n\n /**\n * Go back to chain selection\n */\n const goBackToChainSelection = useCallback(() => {\n setAmount('');\n transition(FlowState.CHAIN_SELECTION, { amount: '' });\n }, [transition]);\n\n /**\n * Update state based on context changes\n */\n useEffect(() => {\n const prevContext = prevContextRef.current;\n \n // Only update state if the relevant context values have actually changed\n if (context.selectedChain !== prevContext.selectedChain) {\n setSelectedChain(context.selectedChain);\n }\n\n if (context.amount !== prevContext.amount) {\n setAmount(context.amount);\n }\n\n if (context.transactionId !== prevContext.transactionId) {\n setTransactionId(context.transactionId);\n }\n \n // Update the ref to the current context\n prevContextRef.current = context;\n }, [context]);\n\n /**\n * Auto-start deposit if in deposit progress state\n */\n useEffect(() => {\n if (\n state === FlowState.DEPOSIT_PROGRESS &&\n !isDepositing &&\n !transactionId\n ) {\n startDeposit();\n }\n }, [state, isDepositing, transactionId, startDeposit]);\n\n /**\n * Get transaction details for display\n */\n const getTransactionDetails = useCallback(() => {\n // Ensure we have a valid session mode\n const currentSessionMode = sessionMode ?? N1SessionMode.NTS;\n\n // Determine account type based on session mode\n const accountType =\n currentSessionMode === N1SessionMode.Nord\n ? 'Exchange Account'\n : 'NTS Account';\n\n if (!transactionResult) {\n // If we don't have a transaction result yet, return default values\n return {\n amount: amount || '0',\n tx: transactionId || 'Processing...',\n from: address || 'Your Wallet',\n to: accountType,\n network: selectedChain\n ? AVAILABLE_CHAINS.find((chain) => chain.id === selectedChain)\n ?.name || selectedChain\n : 'Unknown',\n status: 'Processing',\n explorerUrl: '',\n };\n }\n\n // Return actual transaction details\n return {\n amount: `${transactionResult.amount} ${transactionResult.tokenSymbol}`,\n tx: transactionResult.transactionId,\n from: transactionResult.fromAddress,\n to: transactionResult.toAddress,\n network: transactionResult.networkName,\n status: transactionResult.status,\n explorerUrl:\n transactionResult.explorerUrl ||\n getExplorerUrl(transactionResult.transactionId, selectedChain || ''),\n };\n }, [\n transactionResult,\n amount,\n transactionId,\n address,\n sessionMode,\n selectedChain,\n ]);\n\n return {\n selectedChain,\n setSelectedChain,\n amount,\n setAmount,\n isDepositing,\n transactionId,\n transactionResult,\n selectChain,\n updateAmount,\n startDeposit,\n completeDeposit,\n goBackToChainSelection,\n getTransactionDetails,\n };\n};\n"]}
1
+ {"version":3,"file":"useDepositFlow.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useDepositFlow.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { FlowContext, FlowState } from '../types';\nimport { AVAILABLE_CHAINS } from '../constants';\nimport {\n getExplorerUrl,\n TransactionResult,\n} from '../../../Logic/transactionManager';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { N1SessionMode } from '../../../Provider/types';\nimport { isNordConfigured } from '../utils/nordUtils';\nimport { logger } from '../../../utils/logger';\n\n/**\n * Hook for handling the deposit flow\n *\n * @param options Configuration options\n * @returns Deposit flow methods and state\n */\nexport const useDepositFlow = (options: {\n /**\n * Flow state\n */\n state: FlowState;\n /**\n * Flow context\n */\n context: FlowContext;\n /**\n * Transition to a new state\n */\n transition: (\n newState: FlowState,\n contextUpdates?: Partial<FlowContext>\n ) => boolean;\n /**\n * Handle errors\n */\n handleError: (error: Error) => void;\n /**\n * Update context\n */\n updateContext?: (contextUpdates: Partial<FlowContext>) => void;\n}) => {\n const [txId, setTxId] = useState<string | null>(null);\n const { state, context, transition, handleError } = options;\n const {\n address,\n nord,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n nordUser,\n } = useN1WalletContext();\n const { sessionMode } = useN1WalletInternalContext();\n\n const [selectedChain, setSelectedChain] = useState<string | null>(\n context.selectedChain\n );\n const [amount, setAmount] = useState(context.amount);\n const [isDepositing, setIsDepositing] = useState(false);\n const [transactionId, setTransactionId] = useState<string | null>(\n context.transactionId\n );\n const [transactionResult, setTransactionResult] =\n useState<TransactionResult | null>(null);\n\n // Use refs to track previous values\n const prevContextRef = useRef(context);\n \n // Use the nordUser from context\n const currentNordUser = nordUser;\n\n // Handle transaction ID changes\n useEffect(() => {\n if (!txId) return;\n \n // Transition to the appropriate screen based on whether user has an active session\n if (context.hasActiveSession) {\n // If user has an active session, go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS, { transactionId: txId });\n } else {\n // Check if there's a sessionId stored in localStorage\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n\n if (storedSessionId !== null) {\n // If we have a sessionId in localStorage (even if it's 0), go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS, { transactionId: txId });\n } else {\n // If user doesn't have an active session and no sessionId in localStorage, go to DEPOSIT_SUCCESS first\n transition(FlowState.DEPOSIT_SUCCESS, { transactionId: txId });\n }\n }\n setTxId(null);\n }, [txId, transition, context.hasActiveSession, address]);\n\n /**\n * Select a chain for deposit\n */\n const selectChain = useCallback(\n (chainId: string) => {\n const validChain = AVAILABLE_CHAINS.find((chain) => chain.id === chainId);\n\n if (!validChain) {\n handleError(new Error(`Invalid chain: ${chainId}`));\n return;\n }\n\n setSelectedChain(chainId);\n transition(FlowState.AMOUNT_INPUT, { selectedChain: chainId });\n },\n [transition, handleError]\n );\n\n /**\n * Update amount for deposit\n */\n const updateAmount = useCallback(\n (newAmount: string) => {\n setAmount(newAmount);\n // Only update the context without transitioning to the same state\n // This prevents the \"Transition from AMOUNT_INPUT to AMOUNT_INPUT is not allowed\" error\n if (state === FlowState.AMOUNT_INPUT) {\n // Use updateContext function if available to update without state transition\n if (options.updateContext) {\n options.updateContext({ amount: newAmount });\n }\n } else {\n transition(state, { amount: newAmount });\n }\n },\n [state, transition, options.updateContext]\n );\n\n /**\n * Start deposit process\n */\n const startDeposit = useCallback(async () => {\n if (isDepositing) return;\n\n logger.debug('Starting deposit process');\n // Validate input\n if (!selectedChain) {\n handleError(new Error('No chain selected'));\n return;\n }\n\n if (!amount || parseFloat(amount) <= 0) {\n handleError(new Error('Invalid amount'));\n return;\n }\n\n if (!address) {\n handleError(new Error('No wallet address found'));\n return;\n }\n\n setIsDepositing(true);\n transition(FlowState.DEPOSIT_PROGRESS);\n\n try {\n // Ensure we have a valid session mode\n const currentSessionMode = sessionMode ?? N1SessionMode.NTS;\n\n // Use Nord-TS if available\n let txId = '';\n\n if (currentNordUser && nord && isNordConfigured(nord)) {\n try {\n // Find the USDC token\n const usdcToken = nord.tokens.find((t: any) => t.symbol === 'USDC');\n if (!usdcToken) {\n throw new Error('USDC token not found');\n }\n\n // Attempt to perform the deposit using Nord-TS\n // Since we don't know the exact API, we'll use a try-catch approach\n try {\n // Try depositSpl method if it exists\n if (typeof currentNordUser.depositSpl === 'function') {\n txId = await currentNordUser.depositSpl(\n parseFloat(amount),\n usdcToken.tokenId\n );\n\n let accountInitialized = false;\n for (let i = 0; i < 70; i++) {\n const exists = await nord?.accountExists(address);\n if (exists) {\n accountInitialized = true;\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, 5000));\n }\n\n if (!accountInitialized) {\n throw new Error('Account failed to intialize on N1.');\n }\n\n logger.debug('Deposit successful using Nord-TS', txId);\n\n // Make sure we have a valid chain ID\n if (selectedChain) {\n // Create transaction result object immediately after successful deposit\n const result: TransactionResult = {\n success: true,\n transactionId: txId,\n amount,\n tokenSymbol: 'USDC', // Default to USDC for now\n fromAddress: address || 'Your Wallet',\n toAddress:\n currentSessionMode === N1SessionMode.Nord\n ? 'Exchange Account'\n : 'NTS Account',\n networkName:\n AVAILABLE_CHAINS.find((chain) => chain.id === selectedChain)\n ?.name || selectedChain,\n status: 'Completed',\n explorerUrl: getExplorerUrl(txId, selectedChain),\n };\n\n // Update state with transaction result\n setTransactionId(txId);\n setTransactionResult(result);\n\n logger.debug('Transaction completed successfully');\n setTxId(txId);\n return; // Exit the function early since we've handled everything\n } else {\n throw new Error('No chain selected for deposit');\n }\n } else {\n // If depositSpl doesn't exist, throw an error to fall back to mock implementation\n throw new Error('depositSpl method not available');\n }\n } catch (depositError) {\n logger.warn(\n 'Error using depositSpl, falling back to mock implementation:',\n depositError\n );\n setIsDepositing(false);\n \n // Transition back to AMOUNT_INPUT with the error message\n const errorMessage = depositError instanceof Error \n ? depositError.message \n : 'Failed to process deposit';\n \n transition(FlowState.AMOUNT_INPUT, { \n depositError: errorMessage \n });\n return; // Exit early\n }\n } catch (error) {\n logger.error('Error using Nord-TS for deposit:', error);\n throw error;\n }\n } else {\n logger.debug('Nord configuration issue:', {\n hasNord: !!nord,\n isConfigured: nord ? isNordConfigured(nord) : false,\n hasAddress: !!address,\n hasWalletSignFn: !!signMessageWithWalletKey,\n hasSessionSignFn: !!signMessageWithSessionKey,\n });\n\n throw new Error('Nord is not configured or user is not initialized');\n }\n } catch (error) {\n setIsDepositing(false);\n handleError(\n error instanceof Error ? error : new Error('Failed to process deposit')\n );\n }\n }, [\n isDepositing,\n selectedChain,\n amount,\n address,\n sessionMode,\n transition,\n handleError,\n nord,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n currentNordUser,\n ]);\n\n /**\n * Complete the deposit process and move to the next screen\n */\n const completeDeposit = useCallback(() => {\n // Check if user has an active session to determine the next state\n if (context.hasActiveSession) {\n // If user has an active session, go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS);\n } else {\n // Check if there's a sessionId stored in localStorage\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n\n if (storedSessionId !== null) {\n // If we have a sessionId in localStorage (even if it's 0), go directly to FINAL_SUCCESS\n transition(FlowState.FINAL_SUCCESS);\n } else {\n // If user doesn't have an active session and no sessionId in localStorage, go to NORD_AUTH\n transition(FlowState.AUTH_LOADING);\n }\n }\n }, [context.hasActiveSession, transition, address]);\n\n /**\n * Go back to chain selection\n */\n const goBackToChainSelection = useCallback(() => {\n setAmount('');\n transition(FlowState.CHAIN_SELECTION, { amount: '' });\n }, [transition]);\n\n /**\n * Update state based on context changes\n */\n useEffect(() => {\n const prevContext = prevContextRef.current;\n \n // Only update state if the relevant context values have actually changed\n if (context.selectedChain !== prevContext.selectedChain) {\n setSelectedChain(context.selectedChain);\n }\n\n if (context.amount !== prevContext.amount) {\n setAmount(context.amount);\n }\n\n if (context.transactionId !== prevContext.transactionId) {\n setTransactionId(context.transactionId);\n }\n \n // Update the ref to the current context\n prevContextRef.current = context;\n }, [context]);\n\n /**\n * Auto-start deposit if in deposit progress state\n */\n useEffect(() => {\n if (\n state === FlowState.DEPOSIT_PROGRESS &&\n !isDepositing &&\n !transactionId\n ) {\n startDeposit();\n }\n }, [state, isDepositing, transactionId, startDeposit]);\n\n /**\n * Get transaction details for display\n */\n const getTransactionDetails = useCallback(() => {\n // Ensure we have a valid session mode\n const currentSessionMode = sessionMode ?? N1SessionMode.NTS;\n\n // Determine account type based on session mode\n const accountType =\n currentSessionMode === N1SessionMode.Nord\n ? 'Exchange Account'\n : 'NTS Account';\n\n if (!transactionResult) {\n // If we don't have a transaction result yet, return default values\n return {\n amount: amount || '0',\n tx: transactionId || 'Processing...',\n from: address || 'Your Wallet',\n to: accountType,\n network: selectedChain\n ? AVAILABLE_CHAINS.find((chain) => chain.id === selectedChain)\n ?.name || selectedChain\n : 'Unknown',\n status: 'Processing',\n explorerUrl: '',\n };\n }\n\n // Return actual transaction details\n return {\n amount: `${transactionResult.amount} ${transactionResult.tokenSymbol}`,\n tx: transactionResult.transactionId,\n from: transactionResult.fromAddress,\n to: transactionResult.toAddress,\n network: transactionResult.networkName,\n status: transactionResult.status,\n explorerUrl:\n transactionResult.explorerUrl ||\n getExplorerUrl(transactionResult.transactionId, selectedChain || ''),\n };\n }, [\n transactionResult,\n amount,\n transactionId,\n address,\n sessionMode,\n selectedChain,\n ]);\n\n return {\n selectedChain,\n setSelectedChain,\n amount,\n setAmount,\n isDepositing,\n transactionId,\n transactionResult,\n selectChain,\n updateAmount,\n startDeposit,\n completeDeposit,\n goBackToChainSelection,\n getTransactionDetails,\n };\n};\n"]}
@@ -1,6 +0,0 @@
1
- /**
2
- * Hook to access the Nord instance and create a NordUser if needed
3
- */
4
- export declare const useNordInstance: () => {
5
- nordUser: any;
6
- };