@n1xyz/wallet-widget 0.0.29 → 0.0.30
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/README.md +89 -11
- package/dist/Logic/sessionManager.js +8 -8
- package/dist/Logic/sessionManager.js.map +1 -1
- package/dist/Logic/transactionManager.d.ts +0 -22
- package/dist/Logic/transactionManager.js +0 -189
- package/dist/Logic/transactionManager.js.map +1 -1
- package/dist/Logic/utils.d.ts +3 -7
- package/dist/Logic/utils.js +3 -186
- package/dist/Logic/utils.js.map +1 -1
- package/dist/Modal/LoadingFallback.js +1 -1
- package/dist/Modal/LoadingFallback.js.map +1 -1
- package/dist/Modal/N1WalletModal.d.ts +1 -1
- package/dist/Modal/N1WalletModal.js +50 -205
- package/dist/Modal/N1WalletModal.js.map +1 -1
- package/dist/Modal/NTSFlow/views/CreateSessionView.d.ts +1 -1
- package/dist/Modal/NordFlow/NordFlow.js +44 -17
- package/dist/Modal/NordFlow/NordFlow.js.map +1 -1
- package/dist/Modal/NordFlow/components/ChainButton.d.ts +5 -2
- package/dist/Modal/NordFlow/components/ChainButton.js +16 -13
- package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/EVMChainsButton.d.ts +2 -1
- package/dist/Modal/NordFlow/components/EVMChainsButton.js +11 -9
- package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/Header.d.ts +3 -1
- package/dist/Modal/NordFlow/components/Header.js +38 -4
- package/dist/Modal/NordFlow/components/Header.js.map +1 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js +1 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -1
- package/dist/Modal/NordFlow/components/MoreButton.d.ts +1 -1
- package/dist/Modal/NordFlow/components/MoreButton.js +4 -4
- package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -1
- package/dist/Modal/NordFlow/components/TransactionTable.d.ts +1 -1
- package/dist/Modal/NordFlow/components/TransactionTable.js +11 -11
- package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.d.ts +3 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.js +14 -3
- package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -1
- package/dist/Modal/NordFlow/components/index.d.ts +0 -1
- package/dist/Modal/NordFlow/components/index.js +0 -1
- package/dist/Modal/NordFlow/components/index.js.map +1 -1
- package/dist/Modal/NordFlow/constants.js +12 -48
- package/dist/Modal/NordFlow/constants.js.map +1 -1
- package/dist/Modal/NordFlow/context/DepositContext.js +112 -41
- package/dist/Modal/NordFlow/context/DepositContext.js.map +1 -1
- package/dist/Modal/NordFlow/context/FlowContext.d.ts +1 -0
- package/dist/Modal/NordFlow/context/FlowContext.js +99 -6
- package/dist/Modal/NordFlow/context/FlowContext.js.map +1 -1
- package/dist/Modal/NordFlow/context/WalletConnectContext.js +76 -20
- package/dist/Modal/NordFlow/context/WalletConnectContext.js.map +1 -1
- package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -1
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.d.ts +2 -1
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js +26 -7
- package/dist/Modal/NordFlow/hooks/useTestnetFaucet.js.map +1 -1
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.d.ts +1 -1
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +10 -15
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js +103 -54
- package/dist/Modal/NordFlow/screens/02-ChainSelectionScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.d.ts +1 -2
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js +284 -60
- package/dist/Modal/NordFlow/screens/03-AmountInputScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js +2 -2
- package/dist/Modal/NordFlow/screens/04-DepositProgressScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js +97 -110
- package/dist/Modal/NordFlow/screens/05-DepositSuccessScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js +10 -8
- package/dist/Modal/NordFlow/screens/06-AuthLoadingScreen.js.map +1 -1
- package/dist/Modal/NordFlow/screens/index.d.ts +5 -9
- package/dist/Modal/NordFlow/screens/index.js +5 -9
- package/dist/Modal/NordFlow/screens/index.js.map +1 -1
- package/dist/Modal/NordFlow/types.d.ts +13 -3
- package/dist/Modal/NordFlow/types.js +4 -3
- package/dist/Modal/NordFlow/types.js.map +1 -1
- package/dist/Modal/NordFlow/utils/depositStorage.d.ts +4 -0
- package/dist/Modal/NordFlow/utils/depositStorage.js +48 -0
- package/dist/Modal/NordFlow/utils/depositStorage.js.map +1 -0
- package/dist/Modal/NordFlow/utils/nordUtils.d.ts +1 -1
- package/dist/Modal/NordFlow/utils/nordUtils.js +1 -1
- package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -1
- package/dist/Provider/LazyWalletProvider.d.ts +1 -1
- package/dist/Provider/LazyWalletProvider.js +38 -38
- package/dist/Provider/LazyWalletProvider.js.map +1 -1
- package/dist/Provider/N1WalletProvider.d.ts +2 -1
- package/dist/Provider/N1WalletProvider.js +85 -82
- package/dist/Provider/N1WalletProvider.js.map +1 -1
- package/dist/Provider/ShadowRootWrapper.d.ts +1 -1
- package/dist/Provider/WalletErrorBoundary.d.ts +9 -2
- package/dist/Provider/WalletErrorBoundary.js +19 -1
- package/dist/Provider/WalletErrorBoundary.js.map +1 -1
- package/dist/Provider/hooks/useNordUserInitialization.js +87 -35
- package/dist/Provider/hooks/useNordUserInitialization.js.map +1 -1
- package/dist/Provider/icons/CoinbaseWalletIcon.d.ts +1 -1
- package/dist/Provider/icons/ConnectionDotsSVG.d.ts +1 -1
- package/dist/Provider/icons/MetamaskIcon.d.ts +1 -1
- package/dist/Provider/icons/PhantomIcon.d.ts +1 -1
- package/dist/Provider/icons/UserIcon.d.ts +1 -1
- package/dist/Provider/icons/WalletConnectIcon.d.ts +1 -1
- package/dist/Provider/types.d.ts +18 -16
- package/dist/Provider/types.js +8 -2
- package/dist/Provider/types.js.map +1 -1
- package/dist/WidgetButton/N1ConnectButton.d.ts +1 -1
- package/dist/WidgetButton/N1ConnectButton.js +29 -10
- package/dist/WidgetButton/N1ConnectButton.js.map +1 -1
- package/dist/components/Logo.d.ts +2 -1
- package/dist/components/Logo.js +5 -2
- package/dist/components/Logo.js.map +1 -1
- package/dist/components/QRCodeLoader.d.ts +1 -1
- package/dist/components/QRCodeLoader.js +1 -1
- package/dist/components/QRCodeLoader.js.map +1 -1
- package/dist/components/logos/EVMChainsGroup.js +1 -1
- package/dist/components/logos/EVMChainsGroup.js.map +1 -1
- package/dist/components/logos/MoreChainsGroup.js +1 -1
- package/dist/components/logos/MoreChainsGroup.js.map +1 -1
- package/dist/components/logos/index.d.ts +0 -2
- package/dist/components/logos/index.js +0 -2
- package/dist/components/logos/index.js.map +1 -1
- package/dist/config/solana.d.ts +3 -15
- package/dist/config/solana.js +6 -29
- package/dist/config/solana.js.map +1 -1
- package/dist/embedded-main-css.d.ts +1 -1
- package/dist/embedded-main-css.js +1 -1
- package/dist/embedded-main-css.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.css +2 -2
- package/dist/polyfills/windowEthereumGuard.d.ts +6 -0
- package/dist/polyfills/windowEthereumGuard.js +28 -0
- package/dist/polyfills/windowEthereumGuard.js.map +1 -0
- package/package.json +26 -11
- package/dist/utils/dynamicImports.d.ts +0 -25
|
@@ -1,66 +1,75 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
+
}
|
|
11
36
|
};
|
|
12
37
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
38
|
import { useEffect, useState } from 'react';
|
|
14
|
-
import { TransactionTable } from '../components/TransactionTable';
|
|
15
|
-
import { ANIMATION_EASE, TYPING_INTERVAL } from '../constants';
|
|
16
39
|
import { useN1WalletContext } from '../../../Provider/hooks';
|
|
17
|
-
import { isNordConfigured } from '../utils/nordUtils';
|
|
40
|
+
import { isNordConfigured, shortenAddress } from '../utils/nordUtils';
|
|
18
41
|
import { useDepositContext } from '../context/DepositContext';
|
|
42
|
+
import { useFlowStateContext } from '../context/FlowContext';
|
|
19
43
|
import { getExplorerUrl } from '../../../Logic/transactionManager';
|
|
44
|
+
// Share icon component reused from Header.tsx
|
|
45
|
+
var ShareIcon = function (_a) {
|
|
46
|
+
var className = _a.className;
|
|
47
|
+
return (_jsxs("svg", { className: className || 'h-full w-full', viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M5.93066 8.06944L12.3473 1.65277", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round" }), _jsx("path", { d: "M8.06958 1.65277H12.3474V5.93055", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round" }), _jsx("path", { d: "M10.7431 7.80207V12.3472H1.65283V3.25693H6.19797", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round" })] }));
|
|
48
|
+
};
|
|
20
49
|
export function DepositSuccessScreen() {
|
|
50
|
+
var _this = this;
|
|
21
51
|
var _a = useDepositContext(), amount = _a.amount, completeDeposit = _a.completeDeposit, transactionResult = _a.transactionResult, transactionId = _a.transactionId;
|
|
22
52
|
var nord = useN1WalletContext().nord;
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
from: { text: '', visible: false, typing: false },
|
|
29
|
-
to: { text: '', visible: false, typing: false },
|
|
30
|
-
network: { text: '', visible: false, typing: false },
|
|
31
|
-
status: { text: '', visible: false, typing: false },
|
|
32
|
-
}), animatedTableValues = _d[0], setAnimatedTableValues = _d[1];
|
|
33
|
-
// Add state to track if the button should be enabled
|
|
34
|
-
var _e = useState(false), isContinueEnabled = _e[0], setIsContinueEnabled = _e[1];
|
|
35
|
-
// Add state to show a message about waiting
|
|
36
|
-
var _f = useState(true), showWaitingMessage = _f[0], setShowWaitingMessage = _f[1];
|
|
53
|
+
var context = useFlowStateContext().context;
|
|
54
|
+
var isContinueEnabled = useState(true)[0];
|
|
55
|
+
var _b = useState('USDC'), tokenSymbol = _b[0], setTokenSymbol = _b[1];
|
|
56
|
+
var _c = useState(false), copiedAddress = _c[0], setCopiedAddress = _c[1];
|
|
57
|
+
var _d = useState(false), showCopyTooltip = _d[0], setShowCopyTooltip = _d[1];
|
|
37
58
|
var fallbackTransaction = transactionResult !== null && transactionResult !== void 0 ? transactionResult : {
|
|
38
59
|
success: true,
|
|
39
60
|
transactionId: transactionId !== null && transactionId !== void 0 ? transactionId : 'pending-transaction',
|
|
40
61
|
amount: amount || '0',
|
|
41
62
|
tokenSymbol: 'USDC',
|
|
42
63
|
fromAddress: 'Debug Wallet',
|
|
43
|
-
toAddress: '
|
|
44
|
-
networkName: '
|
|
45
|
-
status: '
|
|
64
|
+
toAddress: 'Exchange Account',
|
|
65
|
+
networkName: 'Devnet',
|
|
66
|
+
status: 'Completed',
|
|
46
67
|
explorerUrl: transactionId ? getExplorerUrl(transactionId) : '',
|
|
47
68
|
};
|
|
48
|
-
// Create table values from transaction details
|
|
49
|
-
var tableValues = {
|
|
50
|
-
amount: { text: fallbackTransaction.amount, visible: true, typing: false },
|
|
51
|
-
tx: { text: fallbackTransaction.transactionId, visible: true, typing: false },
|
|
52
|
-
from: { text: fallbackTransaction.fromAddress, visible: true, typing: false },
|
|
53
|
-
to: { text: fallbackTransaction.toAddress, visible: true, typing: false },
|
|
54
|
-
network: { text: fallbackTransaction.networkName, visible: true, typing: false },
|
|
55
|
-
status: { text: fallbackTransaction.status, visible: true, typing: false },
|
|
56
|
-
};
|
|
57
69
|
// Get token information from Nord if available
|
|
58
|
-
var _g = useState('USDC'), tokenSymbol = _g[0], setTokenSymbol = _g[1];
|
|
59
|
-
// Try to get token information from Nord
|
|
60
70
|
useEffect(function () {
|
|
61
71
|
if (nord && isNordConfigured(nord)) {
|
|
62
72
|
try {
|
|
63
|
-
// Find the USDC token or the first token
|
|
64
73
|
var usdcToken = nord.tokens.find(function (t) { return t.symbol === 'USDC'; }) || nord.tokens[0];
|
|
65
74
|
if (usdcToken) {
|
|
66
75
|
setTokenSymbol(usdcToken.symbol);
|
|
@@ -71,74 +80,52 @@ export function DepositSuccessScreen() {
|
|
|
71
80
|
}
|
|
72
81
|
}
|
|
73
82
|
}, [nord]);
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
visible: true,
|
|
117
|
-
typing: false,
|
|
118
|
-
}, _a)));
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}, TYPING_INTERVAL);
|
|
122
|
-
}, index * 300); // Slightly faster staggering for better UX
|
|
83
|
+
// Solana transaction ID (from depositSpl)
|
|
84
|
+
var solanaTransactionId = transactionId || fallbackTransaction.transactionId;
|
|
85
|
+
var solanaTransactionIdShort = shortenAddress(solanaTransactionId, 5, 4);
|
|
86
|
+
var solanaExplorerUrl = solanaTransactionId ? getExplorerUrl(solanaTransactionId) : '';
|
|
87
|
+
// N1 transaction ID (could be derived from transactionResult or generated)
|
|
88
|
+
// For now, using a formatted version or placeholder
|
|
89
|
+
var n1TransactionId = (transactionResult === null || transactionResult === void 0 ? void 0 : transactionResult.transactionId)
|
|
90
|
+
? "n1_".concat(transactionResult.transactionId.substring(0, 8))
|
|
91
|
+
: "n1_".concat(solanaTransactionId.substring(0, 8));
|
|
92
|
+
var n1TransactionIdShort = shortenAddress(n1TransactionId, 5, 4);
|
|
93
|
+
// N1 explorer URL (placeholder - adjust based on actual N1 explorer)
|
|
94
|
+
var n1ExplorerUrl = "https://explorer.n1.network/tx/".concat(n1TransactionId);
|
|
95
|
+
var fromAddressShort = shortenAddress(fallbackTransaction.fromAddress, 5, 4);
|
|
96
|
+
var fromAddressFull = fallbackTransaction.fromAddress;
|
|
97
|
+
// Handle copy to clipboard for wallet address
|
|
98
|
+
var handleCopyAddress = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
99
|
+
var nav, error_1;
|
|
100
|
+
var _a;
|
|
101
|
+
return __generator(this, function (_b) {
|
|
102
|
+
switch (_b.label) {
|
|
103
|
+
case 0:
|
|
104
|
+
if (!fromAddressFull || typeof navigator === 'undefined')
|
|
105
|
+
return [2 /*return*/];
|
|
106
|
+
nav = navigator;
|
|
107
|
+
if (!((_a = nav.clipboard) === null || _a === void 0 ? void 0 : _a.writeText)) return [3 /*break*/, 4];
|
|
108
|
+
_b.label = 1;
|
|
109
|
+
case 1:
|
|
110
|
+
_b.trys.push([1, 3, , 4]);
|
|
111
|
+
return [4 /*yield*/, nav.clipboard.writeText(fromAddressFull)];
|
|
112
|
+
case 2:
|
|
113
|
+
_b.sent();
|
|
114
|
+
setCopiedAddress(true);
|
|
115
|
+
setTimeout(function () {
|
|
116
|
+
setCopiedAddress(false);
|
|
117
|
+
}, 1000);
|
|
118
|
+
return [3 /*break*/, 4];
|
|
119
|
+
case 3:
|
|
120
|
+
error_1 = _b.sent();
|
|
121
|
+
console.warn('Failed to copy address:', error_1);
|
|
122
|
+
return [3 /*break*/, 4];
|
|
123
|
+
case 4: return [2 /*return*/];
|
|
124
|
+
}
|
|
123
125
|
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
setIsContinueEnabled(true);
|
|
129
|
-
setShowWaitingMessage(false);
|
|
130
|
-
}, 4000);
|
|
131
|
-
return function () { return clearTimeout(enableTimer); };
|
|
132
|
-
}, []);
|
|
133
|
-
var toggleDetails = function () {
|
|
134
|
-
setShowDetails(function (prev) { return !prev; });
|
|
135
|
-
};
|
|
136
|
-
return (_jsx("div", { className: "relative w-full px-4", children: _jsx("div", { className: "flex flex-col space-y-6", children: _jsxs("div", { className: "w-full", children: [_jsx("div", { className: "relative w-full px-3 py-3 flex items-center justify-center transition-all duration-300 ".concat(ANIMATION_EASE, " ").concat(showDetails ? 'opacity-0 max-h-0' : 'opacity-100 max-h-[200px]'), children: _jsxs("div", { className: "relative w-full px-5 py-8 transition-all duration-300 ".concat(ANIMATION_EASE, " ").concat(showDetails ? 'max-h-0 overflow-hidden' : 'max-h-[200px]'), children: [_jsx("div", { className: "w-2 h-2 bg-emerald-800 absolute -top-2 -left-2 rounded-sm" }), _jsx("div", { className: "w-2 h-2 bg-emerald-800 absolute -top-2 -right-2 rounded-sm" }), _jsx("div", { className: "w-2 h-2 bg-emerald-800 absolute -bottom-2 -left-2 rounded-sm" }), _jsx("div", { className: "w-2 h-2 bg-emerald-800 absolute -bottom-2 -right-2 rounded-sm" }), _jsxs("p", { className: "text-5xl md:text-7xl tracking-tight text-emerald-500/80 font-medium pt-4 underline text-center n1-ww-animate-fade-up", style: { animationDelay: '0.3s' }, children: ["+", Number(amount).toLocaleString(), _jsx("span", { className: "text-xl md:text-2xl text-emerald-500/50 ml-2", children: tokenSymbol })] }), _jsx("div", { className: "absolute bottom-0 left-0 right-0 flex justify-center -mb-3", children: _jsxs("button", { onClick: toggleDetails, className: "\n group flex items-center space-x-1 px-3 py-1 text-xs font-medium \n transition-colors duration-200 focus:outline-none\n ".concat(showDetails
|
|
137
|
-
? 'text-emerald-400 hover:text-emerald-300'
|
|
138
|
-
: 'text-n1-ww-gray-400 hover:text-emerald-400', "\n "), children: [_jsx("span", { children: "View details" }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-3 w-3 transition-transform duration-200", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }) })] }) }), _jsx("div", { className: "transition-all duration-300 ease-in-out overflow-hidden ".concat(showDetails
|
|
139
|
-
? 'max-h-[500px] opacity-100 -mt-4'
|
|
140
|
-
: 'max-h-0 opacity-0'), children: _jsx(TransactionTable, { tableValues: animatedTableValues, onClose: toggleDetails }) }), _jsxs("div", { className: "mt-6", children: [showWaitingMessage && (_jsx("p", { className: "text-sm text-neutral-400 text-center mb-2 n1-ww-animate-pulse", children: "Please wait a moment..." })), _jsx("button", { onClick: isContinueEnabled ? completeDeposit : undefined, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); }, className: "\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ".concat(ANIMATION_EASE, "\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n ").concat(!isContinueEnabled ? 'opacity-50 cursor-not-allowed' : '', "\n "), style: {
|
|
141
|
-
transform: isHovered && isContinueEnabled ? 'scale(0.99)' : 'scale(1)',
|
|
142
|
-
}, disabled: !isContinueEnabled, children: _jsx("span", { className: "\n text-base font-medium tracking-wide transition-colors duration-300 ".concat(ANIMATION_EASE, "\n text-n1-ww-gray-300 group-hover:text-white\n "), children: "Continue" }) })] })] }) }) }));
|
|
126
|
+
}); };
|
|
127
|
+
return (_jsx("div", { className: "relative w-full", children: _jsxs("div", { className: "flex flex-col space-y-4", children: [_jsx("div", { className: "w-full py-4", children: _jsx("div", { className: "flex items-center justify-center", children: _jsxs("div", { className: "text-center flex items-end", children: [_jsx("div", { className: "text-5xl md:text-6xl tracking-tight text-n1-ww-main font-medium", children: Number(amount).toLocaleString() }), _jsx("div", { className: "h-5 inline-flex items-center justify-center border border-n1-ww-border rounded px-1 py-1 ml-2 mb-1", children: _jsx("span", { className: "text-white text-xs font-light", children: tokenSymbol }) })] }) }) }), _jsxs("div", { className: "space-y-3 mb-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "Amount:" }), _jsxs("span", { className: "text-white text-xs font-light", children: [Number(amount).toLocaleString(), " ", tokenSymbol] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "Status:" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "text-n1-ww-accent-neon", children: [_jsx("rect", { x: "0.5", y: "0.5", width: "13", height: "13", rx: "6.5", stroke: "currentColor" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M10.7917 4.83199L6.54647 9.9756L6.27917 10.2995L5.97635 10.0059L3.5 7.60561L4.0421 7.0879L6.21563 9.19473L10.1935 4.375L10.7917 4.83199Z", fill: "currentColor", stroke: "currentColor", strokeWidth: "0.5" })] }), _jsx("span", { className: "text-n1-ww-accent-neon text-xs font-light", children: fallbackTransaction.status })] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "From:" }), _jsxs("div", { className: "relative flex items-center gap-1 group", children: [_jsx("button", { onClick: handleCopyAddress, onMouseEnter: function () { return !copiedAddress && setShowCopyTooltip(true); }, onMouseLeave: function () { return setShowCopyTooltip(false); }, className: "text-white text-xs font-light underline cursor-pointer hover:text-n1-ww-main transition-colors", children: fromAddressShort }), (copiedAddress || showCopyTooltip) && (_jsx("div", { className: "absolute left-full ml-2 px-2 py-1 bg-n1-ww-gray-800 border border-n1-ww-border rounded text-xs text-white whitespace-nowrap z-10 pointer-events-none ".concat(copiedAddress ? 'opacity-100' : showCopyTooltip ? 'opacity-100' : 'opacity-0', " transition-opacity duration-200"), children: copiedAddress ? 'Copied!' : 'Click to copy' }))] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "N1 Transaction ID:" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "text-white text-xs font-light underline", children: n1TransactionIdShort }), n1ExplorerUrl && (_jsx("a", { href: n1ExplorerUrl, target: "_blank", rel: "noopener noreferrer", className: "flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors", "aria-label": "View N1 transaction on explorer", children: _jsx(ShareIcon, {}) }))] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-white text-xs font-light", children: "Solana Transaction ID:" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "text-white text-xs font-light underline", children: solanaTransactionIdShort }), solanaExplorerUrl && (_jsx("a", { href: solanaExplorerUrl, target: "_blank", rel: "noopener noreferrer", className: "flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors", "aria-label": "View transaction on explorer", children: _jsx(ShareIcon, {}) }))] })] })] }), _jsx("div", { className: "h-px bg-n1-ww-border mb-4" }), _jsx("button", { onClick: isContinueEnabled ? completeDeposit : undefined, disabled: !isContinueEnabled, className: "\n w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center\n transition-all duration-200 transform\n ".concat(isContinueEnabled
|
|
128
|
+
? 'border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer text-n1-ww-main'
|
|
129
|
+
: 'border-n1-ww-border opacity-50 cursor-not-allowed text-n1-ww-gray-600', "\n "), children: _jsx("span", { className: "font-medium text-sm opacity-90", children: context.isDepositOnlyFlow ? 'Close' : 'Continue' }) })] }) }));
|
|
143
130
|
}
|
|
144
131
|
//# sourceMappingURL=05-DepositSuccessScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"05-DepositSuccessScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/05-DepositSuccessScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { TransactionTable } from '../components/TransactionTable';\nimport { ANIMATION_EASE, TYPING_INTERVAL } from '../constants';\nimport { TableValues } from '../types';\nimport { useN1WalletContext } from '../../../Provider/hooks';\nimport { isNordConfigured } from '../utils/nordUtils';\nimport { useDepositContext } from '../context/DepositContext';\nimport { getExplorerUrl } from '../../../Logic/transactionManager';\n\nexport function DepositSuccessScreen() {\n const { amount, completeDeposit, transactionResult, transactionId } = useDepositContext();\n const { nord } = useN1WalletContext();\n const [isHovered, setIsHovered] = useState(false);\n const [showDetails, setShowDetails] = useState(false);\n const [animatedTableValues, setAnimatedTableValues] = useState<TableValues>({\n amount: { text: '', visible: false, typing: false },\n tx: { text: '', visible: false, typing: false },\n from: { text: '', visible: false, typing: false },\n to: { text: '', visible: false, typing: false },\n network: { text: '', visible: false, typing: false },\n status: { text: '', visible: false, typing: false },\n });\n // Add state to track if the button should be enabled\n const [isContinueEnabled, setIsContinueEnabled] = useState(false);\n // Add state to show a message about waiting\n const [showWaitingMessage, setShowWaitingMessage] = useState(true);\n\n const fallbackTransaction = transactionResult ?? {\n success: true,\n transactionId: transactionId ?? 'pending-transaction',\n amount: amount || '0',\n tokenSymbol: 'USDC',\n fromAddress: 'Debug Wallet',\n toAddress: 'Nord Account',\n networkName: 'Solana',\n status: 'Processing',\n explorerUrl: transactionId ? getExplorerUrl(transactionId) : '',\n };\n\n // Create table values from transaction details\n const tableValues = {\n amount: { text: fallbackTransaction.amount, visible: true, typing: false },\n tx: { text: fallbackTransaction.transactionId, visible: true, typing: false },\n from: { text: fallbackTransaction.fromAddress, visible: true, typing: false },\n to: { text: fallbackTransaction.toAddress, visible: true, typing: false },\n network: { text: fallbackTransaction.networkName, visible: true, typing: false },\n status: { text: fallbackTransaction.status, visible: true, typing: false },\n };\n\n // Get token information from Nord if available\n const [tokenSymbol, setTokenSymbol] = useState('USDC');\n\n // Try to get token information from Nord\n useEffect(() => {\n if (nord && isNordConfigured(nord)) {\n try {\n // Find the USDC token or the first token\n const usdcToken =\n nord.tokens.find((t) => t.symbol === 'USDC') || nord.tokens[0];\n if (usdcToken) {\n setTokenSymbol(usdcToken.symbol);\n }\n } catch (error) {\n console.warn('Error getting token information from Nord:', error);\n }\n }\n }, [nord]);\n\n // Add animation to table values\n useEffect(() => {\n if (!showDetails) return;\n\n // Extract the text values from the tableValues\n const values = {\n amount: `${Number(amount).toLocaleString()} ${tokenSymbol}`,\n tx: tableValues.tx.text,\n from: tableValues.from.text,\n to: tableValues.to.text,\n network: tableValues.network.text,\n status: tableValues.status.text,\n };\n\n // Animate each field with typing effect\n Object.entries(values).forEach(([key, value], index) => {\n setTimeout(() => {\n // Make the field visible first\n setAnimatedTableValues((prev) => ({\n ...prev,\n [key]: {\n ...prev[key as keyof typeof prev],\n visible: true,\n typing: true,\n },\n }));\n\n let textIndex = 0;\n // Type out each character with the typing animation\n const interval = setInterval(() => {\n if (textIndex <= value.length) {\n setAnimatedTableValues((prev) => ({\n ...prev,\n [key]: {\n text: value.slice(0, textIndex),\n visible: true,\n typing: textIndex < value.length,\n },\n }));\n textIndex++;\n } else {\n clearInterval(interval);\n setAnimatedTableValues((prev) => ({\n ...prev,\n [key]: {\n text: value,\n visible: true,\n typing: false,\n },\n }));\n }\n }, TYPING_INTERVAL);\n }, index * 300); // Slightly faster staggering for better UX\n });\n }, [showDetails]);\n\n // Enable the continue button after a minimum viewing time\n useEffect(() => {\n const enableTimer = setTimeout(() => {\n setIsContinueEnabled(true);\n setShowWaitingMessage(false);\n }, 4000);\n\n return () => clearTimeout(enableTimer);\n }, []);\n\n const toggleDetails = () => {\n setShowDetails((prev) => !prev);\n };\n\n return (\n <div className=\"relative w-full px-4\">\n <div className=\"flex flex-col space-y-6\">\n {/* Amount display */}\n <div className=\"w-full\">\n <div\n className={`relative w-full px-3 py-3 flex items-center justify-center transition-all duration-300 ${ANIMATION_EASE} ${showDetails ? 'opacity-0 max-h-0' : 'opacity-100 max-h-[200px]'}`}\n >\n <div\n className={`relative w-full px-5 py-8 transition-all duration-300 ${ANIMATION_EASE} ${\n showDetails ? 'max-h-0 overflow-hidden' : 'max-h-[200px]'\n }`}\n >\n <div className=\"w-2 h-2 bg-emerald-800 absolute -top-2 -left-2 rounded-sm\"></div>\n <div className=\"w-2 h-2 bg-emerald-800 absolute -top-2 -right-2 rounded-sm\"></div>\n <div className=\"w-2 h-2 bg-emerald-800 absolute -bottom-2 -left-2 rounded-sm\"></div>\n <div className=\"w-2 h-2 bg-emerald-800 absolute -bottom-2 -right-2 rounded-sm\"></div>\n <p\n className=\"text-5xl md:text-7xl tracking-tight text-emerald-500/80 font-medium pt-4 underline text-center n1-ww-animate-fade-up\"\n style={{ animationDelay: '0.3s' }}\n >\n +{Number(amount).toLocaleString()}\n <span className=\"text-xl md:text-2xl text-emerald-500/50 ml-2\">\n {tokenSymbol}\n </span>\n </p>\n\n {/* Subtle transaction details toggle positioned at the bottom of amount display */}\n <div className=\"absolute bottom-0 left-0 right-0 flex justify-center -mb-3\">\n <button\n onClick={toggleDetails}\n className={`\n group flex items-center space-x-1 px-3 py-1 text-xs font-medium \n transition-colors duration-200 focus:outline-none\n ${showDetails\n ? 'text-emerald-400 hover:text-emerald-300'\n : 'text-n1-ww-gray-400 hover:text-emerald-400'}\n `}\n >\n <span>View details</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 transition-transform duration-200\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n <div\n className={`transition-all duration-300 ease-in-out overflow-hidden ${\n showDetails\n ? 'max-h-[500px] opacity-100 -mt-4'\n : 'max-h-0 opacity-0'\n }`}\n >\n <TransactionTable\n tableValues={animatedTableValues}\n onClose={toggleDetails}\n />\n </div>\n\n {/* Continue button */}\n <div className=\"mt-6\">\n {showWaitingMessage && (\n <p className=\"text-sm text-neutral-400 text-center mb-2 n1-ww-animate-pulse\">\n Please wait a moment...\n </p>\n )}\n <button\n onClick={isContinueEnabled ? completeDeposit : undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n group relative w-full overflow-hidden rounded-md border-2 bg-neutral-950 py-4 text-center\n transition-all duration-300 ${ANIMATION_EASE}\n cursor-pointer border-n1-ww-border hover:border-n1-ww-border\n ${!isContinueEnabled ? 'opacity-50 cursor-not-allowed' : ''}\n `}\n style={{\n transform:\n isHovered && isContinueEnabled ? 'scale(0.99)' : 'scale(1)',\n }}\n disabled={!isContinueEnabled}\n >\n <span\n className={`\n text-base font-medium tracking-wide transition-colors duration-300 ${ANIMATION_EASE}\n text-n1-ww-gray-300 group-hover:text-white\n `}\n >\n Continue\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"05-DepositSuccessScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/05-DepositSuccessScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { useN1WalletContext } from '../../../Provider/hooks';\nimport { isNordConfigured, shortenAddress } from '../utils/nordUtils';\nimport { useDepositContext } from '../context/DepositContext';\nimport { useFlowStateContext } from '../context/FlowContext';\nimport { getExplorerUrl } from '../../../Logic/transactionManager';\n\n// Share icon component reused from Header.tsx\nconst ShareIcon = ({ className }: { className?: string }) => (\n <svg\n className={className || 'h-full w-full'}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.93066 8.06944L12.3473 1.65277\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M8.06958 1.65277H12.3474V5.93055\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10.7431 7.80207V12.3472H1.65283V3.25693H6.19797\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport function DepositSuccessScreen() {\n const { amount, completeDeposit, transactionResult, transactionId } = useDepositContext();\n const { nord } = useN1WalletContext();\n const { context } = useFlowStateContext();\n const [isContinueEnabled] = useState(true);\n const [tokenSymbol, setTokenSymbol] = useState('USDC');\n const [copiedAddress, setCopiedAddress] = useState(false);\n const [showCopyTooltip, setShowCopyTooltip] = useState(false);\n\n const fallbackTransaction = transactionResult ?? {\n success: true,\n transactionId: transactionId ?? 'pending-transaction',\n amount: amount || '0',\n tokenSymbol: 'USDC',\n fromAddress: 'Debug Wallet',\n toAddress: 'Exchange Account',\n networkName: 'Devnet',\n status: 'Completed',\n explorerUrl: transactionId ? getExplorerUrl(transactionId) : '',\n };\n\n // Get token information from Nord if available\n useEffect(() => {\n if (nord && isNordConfigured(nord)) {\n try {\n const usdcToken =\n nord.tokens.find((t) => t.symbol === 'USDC') || nord.tokens[0];\n if (usdcToken) {\n setTokenSymbol(usdcToken.symbol);\n }\n } catch (error) {\n console.warn('Error getting token information from Nord:', error);\n }\n }\n }, [nord]);\n\n // Solana transaction ID (from depositSpl)\n const solanaTransactionId = transactionId || fallbackTransaction.transactionId;\n const solanaTransactionIdShort = shortenAddress(solanaTransactionId, 5, 4);\n const solanaExplorerUrl = solanaTransactionId ? getExplorerUrl(solanaTransactionId) : '';\n\n // N1 transaction ID (could be derived from transactionResult or generated)\n // For now, using a formatted version or placeholder\n const n1TransactionId = transactionResult?.transactionId \n ? `n1_${transactionResult.transactionId.substring(0, 8)}`\n : `n1_${solanaTransactionId.substring(0, 8)}`;\n const n1TransactionIdShort = shortenAddress(n1TransactionId, 5, 4);\n // N1 explorer URL (placeholder - adjust based on actual N1 explorer)\n const n1ExplorerUrl = `https://explorer.n1.network/tx/${n1TransactionId}`;\n\n const fromAddressShort = shortenAddress(fallbackTransaction.fromAddress, 5, 4);\n const fromAddressFull = fallbackTransaction.fromAddress;\n\n // Handle copy to clipboard for wallet address\n const handleCopyAddress = async () => {\n if (!fromAddressFull || typeof navigator === 'undefined') return;\n\n const nav = navigator as Navigator & {\n clipboard?: { writeText: (text: string) => Promise<void> };\n };\n\n if (nav.clipboard?.writeText) {\n try {\n await nav.clipboard.writeText(fromAddressFull);\n setCopiedAddress(true);\n setTimeout(() => {\n setCopiedAddress(false);\n }, 1000);\n } catch (error) {\n console.warn('Failed to copy address:', error);\n }\n }\n };\n\n return (\n <div className=\"relative w-full\">\n <div className=\"flex flex-col space-y-4\">\n {/* Amount display */}\n <div className=\"w-full py-4\">\n <div className=\"flex items-center justify-center\">\n <div className=\"text-center flex items-end\">\n <div className=\"text-5xl md:text-6xl tracking-tight text-n1-ww-main font-medium\">\n {Number(amount).toLocaleString()}\n </div>\n <div className=\"h-5 inline-flex items-center justify-center border border-n1-ww-border rounded px-1 py-1 ml-2 mb-1\">\n <span className=\"text-white text-xs font-light\">{tokenSymbol}</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Transaction details */}\n <div className=\"space-y-3 mb-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">Amount:</span>\n <span className=\"text-white text-xs font-light\">\n {Number(amount).toLocaleString()} {tokenSymbol}\n </span>\n </div>\n \n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">Status:</span>\n <div className=\"flex items-center gap-2\">\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-n1-ww-accent-neon\"\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"13\"\n height=\"13\"\n rx=\"6.5\"\n stroke=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.7917 4.83199L6.54647 9.9756L6.27917 10.2995L5.97635 10.0059L3.5 7.60561L4.0421 7.0879L6.21563 9.19473L10.1935 4.375L10.7917 4.83199Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"0.5\"\n />\n </svg>\n <span className=\"text-n1-ww-accent-neon text-xs font-light\">{fallbackTransaction.status}</span>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">From:</span>\n <div className=\"relative flex items-center gap-1 group\">\n <button\n onClick={handleCopyAddress}\n onMouseEnter={() => !copiedAddress && setShowCopyTooltip(true)}\n onMouseLeave={() => setShowCopyTooltip(false)}\n className=\"text-white text-xs font-light underline cursor-pointer hover:text-n1-ww-main transition-colors\"\n >\n {fromAddressShort}\n </button>\n {(copiedAddress || showCopyTooltip) && (\n <div\n className={`absolute left-full ml-2 px-2 py-1 bg-n1-ww-gray-800 border border-n1-ww-border rounded text-xs text-white whitespace-nowrap z-10 pointer-events-none ${\n copiedAddress ? 'opacity-100' : showCopyTooltip ? 'opacity-100' : 'opacity-0'\n } transition-opacity duration-200`}\n >\n {copiedAddress ? 'Copied!' : 'Click to copy'}\n </div>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">N1 Transaction ID:</span>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-white text-xs font-light underline\">{n1TransactionIdShort}</span>\n {n1ExplorerUrl && (\n <a\n href={n1ExplorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors\"\n aria-label=\"View N1 transaction on explorer\"\n >\n <ShareIcon />\n </a>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">Solana Transaction ID:</span>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-white text-xs font-light underline\">{solanaTransactionIdShort}</span>\n {solanaExplorerUrl && (\n <a\n href={solanaExplorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors\"\n aria-label=\"View transaction on explorer\"\n >\n <ShareIcon />\n </a>\n )}\n </div>\n </div>\n </div>\n\n {/* Separator */}\n <div className=\"h-px bg-n1-ww-border mb-4\"></div>\n\n {/* Continue / Close button */}\n <button\n onClick={isContinueEnabled ? completeDeposit : undefined}\n disabled={!isContinueEnabled}\n className={`\n w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center\n transition-all duration-200 transform\n ${\n isContinueEnabled\n ? 'border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer text-n1-ww-main'\n : 'border-n1-ww-border opacity-50 cursor-not-allowed text-n1-ww-gray-600'\n }\n `}\n >\n <span className=\"font-medium text-sm opacity-90\">\n {context.isDepositOnlyFlow ? 'Close' : 'Continue'}\n </span>\n </button>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
|
-
import { ANIMATION_EASE } from '../constants';
|
|
4
3
|
import { useDepositContext } from '../context/DepositContext';
|
|
5
4
|
import { WaitingMessage } from '../components/WaitingMessage';
|
|
6
5
|
export function AuthLoadingScreen() {
|
|
@@ -25,11 +24,14 @@ export function AuthLoadingScreen() {
|
|
|
25
24
|
subtitle: authStatusMessage || 'Please wait while we create your Nord account',
|
|
26
25
|
isTyping: false,
|
|
27
26
|
};
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
var statusVariant = authStatus === 'success'
|
|
28
|
+
? 'success'
|
|
29
|
+
: authStatus === 'error'
|
|
30
|
+
? 'error'
|
|
31
|
+
: undefined;
|
|
32
|
+
return (_jsx("div", { className: "overflow-hidden relative", children: authStatus === 'loading' ? (_jsx(WaitingMessage, { loaderSize: 52, message: loadingMessage })) : (_jsxs("div", { className: "flex flex-col items-center text-center space-y-2 ", children: [_jsxs("h3", { className: "text-xl text-white font-semibold", children: [statusVariant === 'success' && 'Authentication Successful', statusVariant === 'error' && 'Authentication Failed'] }), _jsxs("p", { className: "text-sm text-neutral-400", children: [statusVariant === 'success' && 'You have been logged in successfully', statusVariant === 'error' &&
|
|
33
|
+
'There was an error during authentication. Please try again.'] }), statusVariant === 'error' && authErrorMessage && (_jsx("p", { className: "text-xs text-red-400", children: authErrorMessage })), statusVariant === 'error' && (_jsx("div", { className: "pt-4 w-full", children: _jsx("button", { onClick: handleRetry, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); }, className: "\n w-full h-8 rounded border bg-transparent flex items-center justify-center font-medium text-sm\n transition-all duration-200 transform\n border-n1-ww-main text-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\n ", style: {
|
|
34
|
+
transform: isHovered ? 'scale(0.99)' : 'scale(1)',
|
|
35
|
+
}, children: "Try Again" }) }))] })) }));
|
|
34
36
|
}
|
|
35
37
|
//# sourceMappingURL=06-AuthLoadingScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"06-AuthLoadingScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/06-AuthLoadingScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"06-AuthLoadingScreen.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/06-AuthLoadingScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,UAAU,iBAAiB;IACzB,IAAA,KAA4B,QAAQ,CAAU,KAAK,CAAC,EAAnD,SAAS,QAAA,EAAE,YAAY,QAA4B,CAAC;IAC3D,IAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvC,2DAA2D;IACrD,IAAA,KAKF,iBAAiB,EAAE,EAJrB,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,iBAAiB,uBACI,CAAC;IAExB,SAAS,CAAC;QACR,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAM,WAAW,GAAG;QAClB,iCAAiC;QACjC,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;QACjC,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EACN,iBAAiB,IAAI,+CAA+C;QACtE,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,IAAM,aAAa,GACjB,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,KAAK,OAAO;YACtB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACtC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,cAAc,IAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,GAAI,CAC5D,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,mDAAmD,aAChE,cAAI,SAAS,EAAC,kCAAkC,aAC7C,aAAa,KAAK,SAAS,IAAI,2BAA2B,EAC1D,aAAa,KAAK,OAAO,IAAI,uBAAuB,IAClD,EACL,aAAG,SAAS,EAAC,0BAA0B,aACpC,aAAa,KAAK,SAAS,IAAI,sCAAsC,EACrE,aAAa,KAAK,OAAO;4BACxB,6DAA6D,IAC7D,EACH,aAAa,KAAK,OAAO,IAAI,gBAAgB,IAAI,CAChD,YAAG,SAAS,EAAC,sBAAsB,YAAE,gBAAgB,GAAK,CAC3D,EACA,aAAa,KAAK,OAAO,IAAI,CAC5B,cAAK,SAAS,EAAC,aAAa,YAC1B,iBACE,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,EACvC,SAAS,EAAE,0RAIV,EACD,KAAK,EAAE;4BACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;yBAClD,0BAGM,GACL,CACP,IACG,CACP,GACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useDepositContext } from '../context/DepositContext';\nimport { WaitingMessage } from '../components/WaitingMessage';\n\nexport function AuthLoadingScreen() {\n const [isHovered, setIsHovered] = useState<boolean>(false);\n const authInitiatedRef = useRef(false);\n \n // Get auth-related state and functions from DepositContext\n const { \n performAuth,\n authStatus, \n authErrorMessage, \n authStatusMessage\n } = useDepositContext();\n\n useEffect(() => {\n if (!authInitiatedRef.current) {\n authInitiatedRef.current = true;\n performAuth();\n }\n }, [performAuth]);\n\n const handleRetry = () => {\n // Reset and retry authentication\n authInitiatedRef.current = false;\n performAuth();\n };\n\n const loadingMessage = {\n visible: true,\n title: 'Authenticating',\n subtitle:\n authStatusMessage || 'Please wait while we create your Nord account',\n isTyping: false,\n };\n\n const statusVariant =\n authStatus === 'success'\n ? 'success'\n : authStatus === 'error'\n ? 'error'\n : undefined;\n\n return (\n <div className=\"overflow-hidden relative\">\n {authStatus === 'loading' ? (\n <WaitingMessage loaderSize={52} message={loadingMessage} />\n ) : (\n <div className=\"flex flex-col items-center text-center space-y-2 \">\n <h3 className=\"text-xl text-white font-semibold\">\n {statusVariant === 'success' && 'Authentication Successful'}\n {statusVariant === 'error' && 'Authentication Failed'}\n </h3>\n <p className=\"text-sm text-neutral-400\">\n {statusVariant === 'success' && 'You have been logged in successfully'}\n {statusVariant === 'error' &&\n 'There was an error during authentication. Please try again.'}\n </p>\n {statusVariant === 'error' && authErrorMessage && (\n <p className=\"text-xs text-red-400\">{authErrorMessage}</p>\n )}\n {statusVariant === 'error' && (\n <div className=\"pt-4 w-full\">\n <button\n onClick={handleRetry}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n w-full h-8 rounded border bg-transparent flex items-center justify-center font-medium text-sm\n transition-all duration-200 transform\n border-n1-ww-main text-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n Try Again\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
export * from './00-IdleScreen';
|
|
2
1
|
export * from './01-ConnectWalletScreen';
|
|
3
|
-
export * from './02-
|
|
4
|
-
export * from './03-
|
|
5
|
-
export * from './04-
|
|
6
|
-
export * from './05-
|
|
7
|
-
export * from './06-
|
|
8
|
-
export * from './07-AuthLoadingScreen';
|
|
9
|
-
export * from './08-FinalSuccessScreen';
|
|
10
|
-
export * from './09-ErrorScreen';
|
|
2
|
+
export * from './02-ChainSelectionScreen';
|
|
3
|
+
export * from './03-AmountInputScreen';
|
|
4
|
+
export * from './04-DepositProgressScreen';
|
|
5
|
+
export * from './05-DepositSuccessScreen';
|
|
6
|
+
export * from './06-AuthLoadingScreen';
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
export * from './00-IdleScreen';
|
|
2
1
|
export * from './01-ConnectWalletScreen';
|
|
3
|
-
export * from './02-
|
|
4
|
-
export * from './03-
|
|
5
|
-
export * from './04-
|
|
6
|
-
export * from './05-
|
|
7
|
-
export * from './06-
|
|
8
|
-
export * from './07-AuthLoadingScreen';
|
|
9
|
-
export * from './08-FinalSuccessScreen';
|
|
10
|
-
export * from './09-ErrorScreen';
|
|
2
|
+
export * from './02-ChainSelectionScreen';
|
|
3
|
+
export * from './03-AmountInputScreen';
|
|
4
|
+
export * from './04-DepositProgressScreen';
|
|
5
|
+
export * from './05-DepositSuccessScreen';
|
|
6
|
+
export * from './06-AuthLoadingScreen';
|
|
11
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './01-ConnectWalletScreen';\nexport * from './02-ChainSelectionScreen';\nexport * from './03-AmountInputScreen';\nexport * from './04-DepositProgressScreen';\nexport * from './05-DepositSuccessScreen';\nexport * from './06-AuthLoadingScreen';\n"]}
|
|
@@ -6,9 +6,7 @@ import React from 'react';
|
|
|
6
6
|
* Enum representing all possible states in the wallet connection flow
|
|
7
7
|
*/
|
|
8
8
|
export declare enum FlowState {
|
|
9
|
-
IDLE = "IDLE",
|
|
10
9
|
CONNECTING_WALLET = "CONNECTING_WALLET",
|
|
11
|
-
ETH_TO_SOL_AUTH = "ETH_TO_SOL_AUTH",
|
|
12
10
|
CHAIN_SELECTION = "CHAIN_SELECTION",
|
|
13
11
|
AMOUNT_INPUT = "AMOUNT_INPUT",
|
|
14
12
|
DEPOSIT_PROGRESS = "DEPOSIT_PROGRESS",
|
|
@@ -21,15 +19,27 @@ export declare enum FlowState {
|
|
|
21
19
|
* Interface representing the flow context, containing all data necessary
|
|
22
20
|
* for the wallet connection flow
|
|
23
21
|
*/
|
|
22
|
+
export interface StoredDepositRecord {
|
|
23
|
+
transactionId: string;
|
|
24
|
+
amount: string;
|
|
25
|
+
tokenSymbol: string;
|
|
26
|
+
chainId: string;
|
|
27
|
+
chainName: string;
|
|
28
|
+
chainNetwork: string | null;
|
|
29
|
+
timestamp: number;
|
|
30
|
+
}
|
|
24
31
|
export interface FlowContext {
|
|
25
|
-
walletType: 'solana' | 'ethereum' | null;
|
|
26
32
|
hasNordAccount: boolean;
|
|
27
33
|
hasActiveSession: boolean;
|
|
28
34
|
selectedChain: string | null;
|
|
35
|
+
selectedChainId: string | null;
|
|
36
|
+
selectedChainNetwork: string | null;
|
|
29
37
|
amount: string;
|
|
30
38
|
transactionId: string | null;
|
|
31
39
|
error: Error | null;
|
|
32
40
|
depositError?: string;
|
|
41
|
+
isDepositOnlyFlow: boolean;
|
|
42
|
+
lastDeposit: StoredDepositRecord | null;
|
|
33
43
|
}
|
|
34
44
|
/**
|
|
35
45
|
* Interface for state transitions in the flow
|
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export var FlowState;
|
|
8
8
|
(function (FlowState) {
|
|
9
|
-
FlowState["IDLE"] = "IDLE";
|
|
10
9
|
FlowState["CONNECTING_WALLET"] = "CONNECTING_WALLET";
|
|
11
|
-
FlowState["ETH_TO_SOL_AUTH"] = "ETH_TO_SOL_AUTH";
|
|
12
10
|
FlowState["CHAIN_SELECTION"] = "CHAIN_SELECTION";
|
|
13
11
|
FlowState["AMOUNT_INPUT"] = "AMOUNT_INPUT";
|
|
14
12
|
FlowState["DEPOSIT_PROGRESS"] = "DEPOSIT_PROGRESS";
|
|
@@ -21,13 +19,16 @@ export var FlowState;
|
|
|
21
19
|
* Initial flow context with default values
|
|
22
20
|
*/
|
|
23
21
|
export var initialFlowContext = {
|
|
24
|
-
walletType: null,
|
|
25
22
|
hasNordAccount: false,
|
|
26
23
|
hasActiveSession: false,
|
|
27
24
|
selectedChain: null,
|
|
25
|
+
selectedChainId: null,
|
|
26
|
+
selectedChainNetwork: null,
|
|
28
27
|
amount: '',
|
|
29
28
|
transactionId: null,
|
|
30
29
|
error: null,
|
|
31
30
|
depositError: undefined,
|
|
31
|
+
isDepositOnlyFlow: false,
|
|
32
|
+
lastDeposit: null,
|
|
32
33
|
};
|
|
33
34
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,oDAAuC,CAAA;IACvC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,kDAAqC,CAAA;IACrC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,4BAAe,CAAA;AACjB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAyCD;;GAEG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAgB;IAC7C,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,SAAS;IACvB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,IAAI;CAClB,CAAC","sourcesContent":["import React from 'react';\n\n/**\n * Types for the wallet connection flow state machine\n */\n\n/**\n * Enum representing all possible states in the wallet connection flow\n */\nexport enum FlowState {\n CONNECTING_WALLET = 'CONNECTING_WALLET',\n CHAIN_SELECTION = 'CHAIN_SELECTION',\n AMOUNT_INPUT = 'AMOUNT_INPUT',\n DEPOSIT_PROGRESS = 'DEPOSIT_PROGRESS',\n DEPOSIT_SUCCESS = 'DEPOSIT_SUCCESS',\n AUTH_LOADING = 'AUTH_LOADING',\n FINAL_SUCCESS = 'FINAL_SUCCESS',\n ERROR = 'ERROR',\n}\n\n\n\n/**\n * Interface representing the flow context, containing all data necessary\n * for the wallet connection flow\n */\nexport interface StoredDepositRecord {\n transactionId: string;\n amount: string;\n tokenSymbol: string;\n chainId: string;\n chainName: string;\n chainNetwork: string | null;\n timestamp: number;\n}\n\nexport interface FlowContext {\n hasNordAccount: boolean;\n hasActiveSession: boolean;\n selectedChain: string | null;\n selectedChainId: string | null;\n selectedChainNetwork: string | null;\n amount: string;\n transactionId: string | null;\n error: Error | null;\n depositError?: string;\n isDepositOnlyFlow: boolean;\n lastDeposit: StoredDepositRecord | null;\n}\n\n/**\n * Interface for state transitions in the flow\n */\nexport interface StateTransition {\n from: FlowState | FlowState[];\n to: FlowState;\n condition?: (context: FlowContext) => boolean;\n}\n\n/**\n * Initial flow context with default values\n */\nexport const initialFlowContext: FlowContext = {\n hasNordAccount: false,\n hasActiveSession: false,\n selectedChain: null,\n selectedChainId: null,\n selectedChainNetwork: null,\n amount: '',\n transactionId: null,\n error: null,\n depositError: undefined,\n isDepositOnlyFlow: false,\n lastDeposit: null,\n};\n\nexport interface TableValues {\n amount?: { text: string; visible: boolean; typing: boolean };\n tx: { text: string; visible: boolean; typing: boolean };\n from: { text: string; visible: boolean; typing: boolean };\n to: { text: string; visible: boolean; typing: boolean };\n network: { text: string; visible: boolean; typing: boolean };\n status: { text: string; visible: boolean; typing: boolean };\n}\n\nexport interface WaitingMessageState {\n title: string;\n subtitle: string;\n visible: boolean;\n isTyping: boolean;\n}\n\n/**\n * Interface for a blockchain network\n */\nexport interface Chain {\n id: string;\n name: string;\n logo: string | React.ReactNode;\n disabled?: boolean;\n network?: string;\n description?: string;\n}\n\nexport interface App {\n name: string;\n color: string;\n progress: number;\n}\n\nexport type ButtonKey = 'deposit' | 'continue' | 'openApp';\n\nexport interface ButtonState {\n text: string;\n isTyping: boolean;\n showCursor: boolean;\n}\n\nexport type ButtonStates = Record<ButtonKey, ButtonState>;\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { StoredDepositRecord } from '../types';
|
|
2
|
+
export declare function saveLastDepositRecord(address: string | null | undefined, record: StoredDepositRecord): void;
|
|
3
|
+
export declare function readLastDepositRecord(address: string | null | undefined): StoredDepositRecord | null;
|
|
4
|
+
export declare function clearLastDepositRecord(address: string | null | undefined): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var LAST_DEPOSIT_KEY_PREFIX = 'n1_last_deposit_';
|
|
2
|
+
var getStorage = function () {
|
|
3
|
+
return typeof window === 'undefined' ? null : window.localStorage;
|
|
4
|
+
};
|
|
5
|
+
var getKey = function (address) {
|
|
6
|
+
return "".concat(LAST_DEPOSIT_KEY_PREFIX).concat(address.toLowerCase());
|
|
7
|
+
};
|
|
8
|
+
export function saveLastDepositRecord(address, record) {
|
|
9
|
+
if (!address || !record || !record.transactionId) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
var storage = getStorage();
|
|
13
|
+
if (!storage) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
storage.setItem(getKey(address), JSON.stringify(record));
|
|
17
|
+
}
|
|
18
|
+
export function readLastDepositRecord(address) {
|
|
19
|
+
if (!address) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
var storage = getStorage();
|
|
23
|
+
if (!storage) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
var raw = storage.getItem(getKey(address));
|
|
28
|
+
if (!raw) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return JSON.parse(raw);
|
|
32
|
+
}
|
|
33
|
+
catch (_a) {
|
|
34
|
+
storage.removeItem(getKey(address));
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function clearLastDepositRecord(address) {
|
|
39
|
+
if (!address) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
var storage = getStorage();
|
|
43
|
+
if (!storage) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
storage.removeItem(getKey(address));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=depositStorage.js.map
|