@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionTable.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/TransactionTable.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AASnE,MAAM,UAAU,gBAAgB,CAAC,EAGT;QAFtB,WAAW,iBAAA,EACX,OAAO,aAAA;IAEP,+BAA+B;IAC/B,IAAM,QAAQ,GAAG,UAAC,GAAW;QAC3B,IAAM,MAAM,GAA2B;YACrC,MAAM,EAAE,QAAQ;YAChB,EAAE,EAAE,gBAAgB;YACpB,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,QAAQ;SACjB,CAAC;QAEF,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAC5B,CAAC,CAAC;IAEF,gDAAgD;IAChD,IAAM,cAAc,GAAG,UAAC,GAAW,EAAE,KAAa;QAChD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,IACE,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACvC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EACzC,CAAC;gBACD,OAAO,kDAAkD,CAAC;YAC5D,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,OAAO,gDAAgD,CAAC;YAC1D,CAAC;YACD,IACE,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EACrC,CAAC;gBACD,OAAO,4CAA4C,CAAC;YACtD,CAAC;QACH,CAAC;QAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,0JAA0J,CAAC;QACpK,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,kDAAkD,CAAC;QAC5D,CAAC;QAED,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,0JAA0J,CAAC;QACpK,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,oDAAoD,CAAC;QAC9D,CAAC;QAED,OAAO,yDAAyD,CAAC;IACnE,CAAC,CAAC;IAEF,mDAAmD;IACnD,IAAM,eAAe,GAAG,UAAC,GAAW,EAAE,KAAa;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,iDAAiD;IACjD,IAAM,eAAe,GAAG,UAAC,GAAW,EAAE,KAAa;QAEjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,OAAO,8CAAuC,KAAK,oBAAiB,CAAC;QACvE,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,6BAA6B;IAC7B,IAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEvE,mCAAmC;IACnC,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAC,EAAM,EAAE,EAAM;YAAb,IAAI,QAAA;YAAI,IAAI,QAAA;QACnE,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,eAAK,SAAS,EAAC,qKAAqK,aACjL,OAAO,IAAI,CACV,iBACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,gLAAgL,gBAC/K,eAAe,YAE1B,cACE,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,YAErB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,sBAAsB,GACxB,GACE,GACC,CACV,EACD,cAAK,SAAS,EAAC,wBAAwB,YACpC,aAAa,CAAC,GAAG,CAAC,UAAC,EAAY;wBAAX,GAAG,QAAA,EAAE,KAAK,QAAA;oBAAM,OAAA,CACnC,eAAe,SAAS,EAAC,yCAAyC,aAChE,eAAM,SAAS,EAAC,wEAAwE,YACrF,QAAQ,CAAC,GAAG,CAAC,GACT,EACP,eACE,SAAS,EAAE,+CAAwC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,mCAAgC,aAE7H,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC;wCACjC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACjC,aACE,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EACtC,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAE,UAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,kCAA+B,EAC5E,KAAK,EAAE,KAAK,CAAC,IAAI,aAEjB,eAAM,SAAS,EAAC,2BAA2B,YACxC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAC5B,EACP,cACE,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,8FAA8F,EACxG,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,MAAM,EAAC,cAAc,YAErB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,8EAA8E,GAChF,GACE,IACJ,CACL,CAAC,CAAC,CAAC,CACF,eACE,SAAS,EAAE,UAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,4BAAyB,EACtE,KAAK,EAAE,KAAK,CAAC,IAAI,YAEhB,KAAK,CAAC,IAAI,GACN,CACR,EACA,KAAK,CAAC,MAAM,IAAI,CACf,eAAM,SAAS,EAAC,iGAAiG,GAAQ,CAC1H,IACG,KA7CE,GAAG,CA8CP,CACP;gBAhDoC,CAgDpC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { TableValues } from '../types';\nimport { shortenAddress } from '../utils/nordUtils';\nimport { getExplorerUrl } from '../../../Logic/transactionManager';\n\ninterface TransactionTableProps {\n tableValues: TableValues & {\n amount?: { text: string; visible: boolean; typing: boolean };\n };\n onClose?: () => void;\n}\n\nexport function TransactionTable({\n tableValues,\n onClose,\n}: TransactionTableProps) {\n // Friendly labels for the keys\n const getLabel = (key: string) => {\n const labels: Record<string, string> = {\n amount: 'Amount',\n tx: 'Transaction ID',\n from: 'From',\n to: 'To',\n network: 'Network',\n status: 'Status',\n };\n\n return labels[key] || key;\n };\n\n // Get appropriate color for values based on key\n const getValueStyles = (key: string, value: string) => {\n if (key === 'status') {\n if (\n value.toLowerCase().includes('success') ||\n value.toLowerCase().includes('confirmed')\n ) {\n return 'text-green-500 dark:text-emerald-500 font-medium';\n }\n if (value.toLowerCase().includes('pending')) {\n return 'text-amber-500 dark:text-amber-400 font-medium';\n }\n if (\n value.toLowerCase().includes('fail') ||\n value.toLowerCase().includes('error')\n ) {\n return 'text-red-500 dark:text-red-400 font-medium';\n }\n }\n\n if (key === 'tx') {\n return 'text-n1-ww-gray-800 dark:text-n1-ww-gray-200 text-xs font-medium hover:text-n1-ww-main-600 dark:hover:text-n1-ww-main-400 transition-colors duration-200';\n }\n\n if (key === 'network') {\n return 'text-purple-600 dark:text-purple-400 font-medium';\n }\n\n if (key === 'from' || key === 'to') {\n return 'text-n1-ww-gray-800 dark:text-n1-ww-gray-200 text-xs font-medium hover:text-n1-ww-main-600 dark:hover:text-n1-ww-main-400 transition-colors duration-200';\n }\n\n if (key === 'amount') {\n return 'text-green-600 dark:text-emerald-500 font-semibold';\n }\n\n return 'text-n1-ww-gray-900 dark:text-n1-ww-gray-50 font-medium';\n };\n\n // Format display value with ellipsis for long text\n const getDisplayValue = (key: string, value: string) => {\n if (key === 'tx') {\n return shortenAddress(value, 5, 4);\n }\n\n if (key === 'from' || key === 'to') {\n return shortenAddress(value, 5, 4);\n }\n\n return value;\n };\n\n // Get explorer URL for transaction ID or address\n const getExplorerLink = (key: string, value: string) => {\n\n if (key === 'tx') {\n return getExplorerUrl(value);\n }\n\n if (key === 'from') {\n return `https://explorer.solana.com/address/${value}?cluster=devnet`;\n }\n\n return '';\n };\n\n // Order of fields to display\n const fieldOrder = ['amount', 'status', 'network', 'from', 'to', 'tx'];\n\n // Sort entries based on fieldOrder\n const sortedEntries = Object.entries(tableValues).sort(([keyA], [keyB]) => {\n const indexA = fieldOrder.indexOf(keyA);\n const indexB = fieldOrder.indexOf(keyB);\n return (indexA === -1 ? 999 : indexA) - (indexB === -1 ? 999 : indexB);\n });\n\n return (\n <div className=\"relative w-full h-full bg-n1-ww-gray-100 dark:bg-n1-ww-gray-950 border border-n1-ww-gray-200 dark:border-n1-ww-gray-800 p-5 rounded-sm flex flex-col justify-center\">\n {onClose && (\n <button\n onClick={onClose}\n className=\"absolute top-3 right-2 text-n1-ww-gray-500 dark:text-n1-ww-gray-600 hover:text-n1-ww-gray-500 dark:hover:text-n1-ww-gray-300 transition-colors duration-200 focus:outline-none\"\n aria-label=\"Close details\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\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=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n <div className=\"space-y-3 text-sm pt-5\">\n {sortedEntries.map(([key, value]) => (\n <div key={key} className=\"flex items-center justify-between py-2 \">\n <span className=\"text-n1-ww-gray-500 dark:text-n1-ww-gray-400 font-medium min-w-[120px]\">\n {getLabel(key)}\n </span>\n <div\n className={`relative transition-all duration-300 ${value.visible ? 'opacity-100' : 'opacity-0'} max-w-[65%] text-right flex-1`}\n >\n {(key === 'tx' || key === 'from') &&\n getExplorerLink(key, value.text) ? (\n <a\n href={getExplorerLink(key, value.text)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${getValueStyles(key, value.text)} break-all inline-block group`}\n title={value.text}\n >\n <span className=\"underline hover:font-bold\">\n {getDisplayValue(key, value.text)}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 ml-1 inline-block opacity-50 group-hover:opacity-100 transition-opacity 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=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n </a>\n ) : (\n <span\n className={`${getValueStyles(key, value.text)} break-all inline-block`}\n title={value.text}\n >\n {value.text}\n </span>\n )}\n {value.typing && (\n <span className=\"inline-block ml-1 w-[2px] h-[14px] bg-n1-ww-main-500 dark:bg-n1-ww-main-400 n1-ww-animate-pulse\"></span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TransactionTable.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/TransactionTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { TableValues } from '../types';\nimport { shortenAddress } from '../utils/nordUtils';\nimport { getExplorerUrl } from '../../../Logic/transactionManager';\n\ninterface TransactionTableProps {\n tableValues: TableValues & {\n amount?: { text: string; visible: boolean; typing: boolean };\n };\n onClose?: () => void;\n}\n\nexport function TransactionTable({\n tableValues,\n onClose,\n}: TransactionTableProps) {\n // Friendly labels for the keys\n const getLabel = (key: string) => {\n const labels: Record<string, string> = {\n amount: 'Amount',\n tx: 'Transaction ID',\n from: 'From',\n to: 'To',\n network: 'Network',\n status: 'Status',\n };\n\n return labels[key] || key;\n };\n\n // Get appropriate color for values based on key\n const getValueStyles = (key: string, value: string) => {\n if (key === 'status') {\n if (\n value.toLowerCase().includes('success') ||\n value.toLowerCase().includes('confirmed')\n ) {\n return 'text-emerald-500 font-medium';\n }\n if (value.toLowerCase().includes('pending')) {\n return 'text-amber-400 font-medium';\n }\n if (\n value.toLowerCase().includes('fail') ||\n value.toLowerCase().includes('error')\n ) {\n return 'text-red-400 font-medium';\n }\n }\n\n if (key === 'tx') {\n return 'text-n1-ww-gray-200 text-xs font-medium hover:text-n1-ww-main-400 transition-colors duration-200';\n }\n\n if (key === 'network') {\n return 'text-purple-400 font-medium';\n }\n\n if (key === 'from' || key === 'to') {\n return 'text-n1-ww-gray-200 text-xs font-medium hover:text-n1-ww-main-400 transition-colors duration-200';\n }\n\n if (key === 'amount') {\n return 'text-emerald-500 font-semibold';\n }\n\n return 'text-n1-ww-gray-50 font-medium';\n };\n\n // Format display value with ellipsis for long text\n const getDisplayValue = (key: string, value: string) => {\n if (key === 'tx') {\n return shortenAddress(value, 5, 4);\n }\n\n if (key === 'from' || key === 'to') {\n return shortenAddress(value, 5, 4);\n }\n\n return value;\n };\n\n // Get explorer URL for transaction ID or address\n const getExplorerLink = (key: string, value: string) => {\n\n if (key === 'tx') {\n return getExplorerUrl(value);\n }\n\n if (key === 'from') {\n return `https://explorer.solana.com/address/${value}?cluster=devnet`;\n }\n\n return '';\n };\n\n // Order of fields to display\n const fieldOrder = ['amount', 'status', 'network', 'from', 'to', 'tx'];\n\n // Sort entries based on fieldOrder\n const sortedEntries = Object.entries(tableValues).sort(([keyA], [keyB]) => {\n const indexA = fieldOrder.indexOf(keyA);\n const indexB = fieldOrder.indexOf(keyB);\n return (indexA === -1 ? 999 : indexA) - (indexB === -1 ? 999 : indexB);\n });\n\n return (\n <div className=\"relative w-full h-full bg-n1-ww-gray-950 border border-n1-ww-border p-5 rounded-sm flex flex-col justify-center\">\n {onClose && (\n <button\n onClick={onClose}\n className=\"absolute top-3 right-2 text-n1-ww-gray-600 hover:text-n1-ww-gray-300 transition-colors duration-200 focus:outline-none\"\n aria-label=\"Close details\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\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=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n <div className=\"space-y-3 text-sm pt-5\">\n {sortedEntries.map(([key, value]) => (\n <div key={key} className=\"flex items-center justify-between py-2 \">\n <span className=\"text-n1-ww-gray-400 font-medium min-w-[120px]\">\n {getLabel(key)}\n </span>\n <div\n className={`relative transition-all duration-300 ${value.visible ? 'opacity-100' : 'opacity-0'} max-w-[65%] text-right flex-1`}\n >\n {(key === 'tx' || key === 'from') &&\n getExplorerLink(key, value.text) ? (\n <a\n href={getExplorerLink(key, value.text)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${getValueStyles(key, value.text)} break-all inline-block group`}\n title={value.text}\n >\n <span className=\"underline hover:font-bold\">\n {getDisplayValue(key, value.text)}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 ml-1 inline-block opacity-50 group-hover:opacity-100 transition-opacity 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=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n </a>\n ) : (\n <span\n className={`${getValueStyles(key, value.text)} break-all inline-block`}\n title={value.text}\n >\n {value.text}\n </span>\n )}\n {value.typing && (\n <span className=\"inline-block ml-1 w-[2px] h-[14px] bg-n1-ww-main-400 n1-ww-animate-pulse\"></span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { WaitingMessageState } from '../types';
|
|
2
2
|
interface WaitingMessageProps {
|
|
3
3
|
message: WaitingMessageState;
|
|
4
|
+
loaderSize?: number;
|
|
5
|
+
animation?: 'loader' | 'transfer';
|
|
4
6
|
}
|
|
5
|
-
export declare function WaitingMessage({ message }: WaitingMessageProps): JSX.Element;
|
|
7
|
+
export declare function WaitingMessage({ message, loaderSize, animation, }: WaitingMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
6
8
|
export {};
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { N1LoaderAnimation } from '../../../animations/N1Loader';
|
|
3
|
+
import { SolanaLogo } from '../../../components/logos';
|
|
4
|
+
import Logo from '../../../components/Logo';
|
|
3
5
|
export function WaitingMessage(_a) {
|
|
4
|
-
var message = _a.message;
|
|
5
|
-
return (_jsxs("div", { className: "flex flex-col items-center justify-center
|
|
6
|
+
var message = _a.message, _b = _a.loaderSize, loaderSize = _b === void 0 ? 48 : _b, _c = _a.animation, animation = _c === void 0 ? 'loader' : _c;
|
|
7
|
+
return (_jsxs("div", { className: "flex flex-col items-center justify-center", children: [animation === 'loader' ? (_jsx(N1LoaderAnimation, { size: loaderSize })) : (_jsx(TransferWaveAnimation, {})), _jsxs("div", { className: "text-center w-[300px] my-4", children: [_jsx("h3", { className: "text-sm text-white transition-all duration-300 h-[32px] flex items-center justify-center relative", children: _jsx("div", { className: "absolute", children: message.visible && message.title }) }), _jsx("div", { className: "text-xs flex items-center justify-center relative mt-2 font-light", children: _jsx("div", { className: "absolute", children: message.visible && message.subtitle }) })] })] }));
|
|
6
8
|
}
|
|
9
|
+
var DOT_INDICES = Array.from({ length: 7 }, function (_, index) { return index; });
|
|
10
|
+
var TransferWaveAnimation = function () { return (_jsx("div", { className: "flex w-full items-center justify-center", "aria-label": "Solana deposit moving into N1", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "relative h-7 w-7 rounded-full bg-gradient-to-br from-black via-neutral-900 to-neutral-800 p-px shadow-[0_12px_30px_rgba(0,0,0,0.6)]", children: _jsx("div", { className: "flex h-full w-full items-center justify-center rounded-full bg-black text-white", children: _jsx(SolanaLogo, { width: 14, height: 14 }) }) }), _jsx("div", { className: "flex items-center gap-[3px]", children: DOT_INDICES.map(function (index) {
|
|
11
|
+
return (_jsx("span", { className: "n1-ww-animate-transfer-dot n1-ww-force-motion rounded-full bg-n1-ww-main/90 shadow-[0_0_10px_rgba(245,94,43,0.45)]", style: {
|
|
12
|
+
width: '2.5px',
|
|
13
|
+
height: '2.5px',
|
|
14
|
+
animationDelay: "".concat(index * 0.12, "s"),
|
|
15
|
+
animationDuration: '1.6s',
|
|
16
|
+
}, "aria-hidden": "true" }, "wave-dot-".concat(index)));
|
|
17
|
+
}) }), _jsx("div", { className: "relative h-7 w-7 rounded-full bg-n1-ww-gray-800/70 p-px shadow-[0_12px_30px_rgba(0,0,0,0.6)]", children: _jsx("div", { className: "flex h-full w-full items-center justify-center rounded-full bg-[#1b1b1b]", children: _jsx(Logo, { size: 12, className: "text-n1-ww-main/90" }) }) })] }) })); };
|
|
7
18
|
//# sourceMappingURL=WaitingMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaitingMessage.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/WaitingMessage.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"WaitingMessage.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/WaitingMessage.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAQ5C,MAAM,UAAU,cAAc,CAAC,EAIT;QAHpB,OAAO,aAAA,EACP,kBAAe,EAAf,UAAU,mBAAG,EAAE,KAAA,EACf,iBAAoB,EAApB,SAAS,mBAAG,QAAQ,KAAA;IAEpB,OAAO,CACL,eAAK,SAAS,EAAC,2CAA2C,aACvD,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CACxB,KAAC,iBAAiB,IAAC,IAAI,EAAE,UAAU,GAAI,CACxC,CAAC,CAAC,CAAC,CACF,KAAC,qBAAqB,KAAG,CAC1B,EACD,eAAK,SAAS,EAAC,4BAA4B,aACzC,aAAI,SAAS,EAAC,mGAAmG,YAC/G,cAAK,SAAS,EAAC,UAAU,YACtB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,GAC7B,GACH,EACL,cAAK,SAAS,EAAC,mEAAmE,YAChF,cAAK,SAAS,EAAC,UAAU,YACtB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,GAChC,GACF,IACF,IACF,CACP,CAAC;AACJ,CAAC;AAED,IAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;AAEnE,IAAM,qBAAqB,GAAG,cAAM,OAAA,CAClC,cACE,SAAS,EAAC,yCAAyC,gBACxC,+BAA+B,YAE1C,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,qIAAqI,YAClJ,cAAK,SAAS,EAAC,iFAAiF,YAC9F,KAAC,UAAU,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,GACjC,GACF,EACN,cAAK,SAAS,EAAC,6BAA6B,YACzC,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK;oBACrB,OAAO,CACL,eAEE,SAAS,EAAC,oHAAoH,EAC9H,KAAK,EAAE;4BACL,KAAK,EAAE,OAAO;4BACd,MAAM,EAAE,OAAO;4BACf,cAAc,EAAE,UAAG,KAAK,GAAG,IAAI,MAAG;4BAClC,iBAAiB,EAAE,MAAM;yBAC1B,iBACW,MAAM,IARb,mBAAY,KAAK,CAAE,CASxB,CACH,CAAC;gBACJ,CAAC,CAAC,GACE,EACN,cAAK,SAAS,EAAC,8FAA8F,YAC3G,cAAK,SAAS,EAAC,0EAA0E,YACvF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,oBAAoB,GAAG,GAC7C,GACF,IACF,GACF,CACP,EAnCmC,CAmCnC,CAAC","sourcesContent":["import { WaitingMessageState } from '../types';\nimport { N1LoaderAnimation } from '../../../animations/N1Loader';\nimport { SolanaLogo } from '../../../components/logos';\nimport Logo from '../../../components/Logo';\n\ninterface WaitingMessageProps {\n message: WaitingMessageState;\n loaderSize?: number;\n animation?: 'loader' | 'transfer';\n}\n\nexport function WaitingMessage({\n message,\n loaderSize = 48,\n animation = 'loader',\n}: WaitingMessageProps) {\n return (\n <div className=\"flex flex-col items-center justify-center\">\n {animation === 'loader' ? (\n <N1LoaderAnimation size={loaderSize} />\n ) : (\n <TransferWaveAnimation />\n )}\n <div className=\"text-center w-[300px] my-4\">\n <h3 className=\"text-sm text-white transition-all duration-300 h-[32px] flex items-center justify-center relative\"> \n <div className=\"absolute\">\n {message.visible && message.title}\n </div>\n </h3>\n <div className=\"text-xs flex items-center justify-center relative mt-2 font-light\">\n <div className=\"absolute\">\n {message.visible && message.subtitle}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nconst DOT_INDICES = Array.from({ length: 7 }, (_, index) => index);\n\nconst TransferWaveAnimation = () => (\n <div\n className=\"flex w-full items-center justify-center\"\n aria-label=\"Solana deposit moving into N1\"\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"relative h-7 w-7 rounded-full bg-gradient-to-br from-black via-neutral-900 to-neutral-800 p-px shadow-[0_12px_30px_rgba(0,0,0,0.6)]\">\n <div className=\"flex h-full w-full items-center justify-center rounded-full bg-black text-white\">\n <SolanaLogo width={14} height={14} />\n </div>\n </div>\n <div className=\"flex items-center gap-[3px]\">\n {DOT_INDICES.map((index) => {\n return (\n <span\n key={`wave-dot-${index}`}\n className=\"n1-ww-animate-transfer-dot n1-ww-force-motion rounded-full bg-n1-ww-main/90 shadow-[0_0_10px_rgba(245,94,43,0.45)]\"\n style={{\n width: '2.5px',\n height: '2.5px',\n animationDelay: `${index * 0.12}s`,\n animationDuration: '1.6s',\n }}\n aria-hidden=\"true\"\n />\n );\n })}\n </div>\n <div className=\"relative h-7 w-7 rounded-full bg-n1-ww-gray-800/70 p-px shadow-[0_12px_30px_rgba(0,0,0,0.6)]\">\n <div className=\"flex h-full w-full items-center justify-center rounded-full bg-[#1b1b1b]\">\n <Logo size={12} className=\"text-n1-ww-main/90\" />\n </div>\n </div>\n </div>\n </div>\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC","sourcesContent":["export * from './ImageWithFallback';\nexport * from './ChainButton';\nexport * from './TransactionTable';\nexport * from './WaitingMessage';\nexport * from './Header';\n"]}
|
|
@@ -55,7 +55,6 @@ export var STATE_TRANSITIONS = [
|
|
|
55
55
|
{
|
|
56
56
|
from: [
|
|
57
57
|
FlowState.ERROR,
|
|
58
|
-
FlowState.IDLE,
|
|
59
58
|
],
|
|
60
59
|
to: FlowState.CONNECTING_WALLET,
|
|
61
60
|
condition: function (context) {
|
|
@@ -63,27 +62,16 @@ export var STATE_TRANSITIONS = [
|
|
|
63
62
|
&& !context.hasNordAccount;
|
|
64
63
|
}
|
|
65
64
|
},
|
|
66
|
-
//
|
|
65
|
+
// Allow navigating back to chain selection from the amount input screen
|
|
67
66
|
{
|
|
68
|
-
from:
|
|
69
|
-
|
|
70
|
-
FlowState.IDLE,
|
|
71
|
-
FlowState.CONNECTING_WALLET,
|
|
72
|
-
],
|
|
73
|
-
to: FlowState.ETH_TO_SOL_AUTH,
|
|
74
|
-
condition: function (context) {
|
|
75
|
-
return !context.hasActiveSession
|
|
76
|
-
&& !context.hasNordAccount
|
|
77
|
-
&& context.walletType !== 'solana';
|
|
78
|
-
}
|
|
67
|
+
from: FlowState.AMOUNT_INPUT,
|
|
68
|
+
to: FlowState.CHAIN_SELECTION,
|
|
79
69
|
},
|
|
80
70
|
// Global recovery transition (can happen from any state upon recovery)
|
|
81
71
|
{
|
|
82
72
|
from: [
|
|
83
73
|
FlowState.ERROR,
|
|
84
|
-
FlowState.IDLE,
|
|
85
74
|
FlowState.CONNECTING_WALLET,
|
|
86
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
87
75
|
],
|
|
88
76
|
to: FlowState.CHAIN_SELECTION,
|
|
89
77
|
condition: function (context) {
|
|
@@ -95,57 +83,52 @@ export var STATE_TRANSITIONS = [
|
|
|
95
83
|
{
|
|
96
84
|
from: [
|
|
97
85
|
FlowState.ERROR,
|
|
98
|
-
FlowState.IDLE,
|
|
99
86
|
FlowState.CONNECTING_WALLET,
|
|
100
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
101
87
|
FlowState.CHAIN_SELECTION,
|
|
102
88
|
FlowState.AMOUNT_INPUT,
|
|
103
89
|
],
|
|
104
90
|
to: FlowState.AMOUNT_INPUT,
|
|
105
91
|
condition: function (context) {
|
|
106
|
-
return
|
|
107
|
-
|
|
92
|
+
return context.isDepositOnlyFlow
|
|
93
|
+
|| (!context.hasActiveSession
|
|
94
|
+
&& !context.hasNordAccount);
|
|
108
95
|
}
|
|
109
96
|
},
|
|
110
97
|
// Global recovery transition (can happen from any state upon recovery)
|
|
111
98
|
{
|
|
112
99
|
from: [
|
|
113
100
|
FlowState.ERROR,
|
|
114
|
-
FlowState.IDLE,
|
|
115
101
|
FlowState.CONNECTING_WALLET,
|
|
116
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
117
102
|
FlowState.CHAIN_SELECTION,
|
|
118
103
|
FlowState.AMOUNT_INPUT,
|
|
119
104
|
],
|
|
120
105
|
to: FlowState.DEPOSIT_PROGRESS,
|
|
121
106
|
condition: function (context) {
|
|
122
|
-
return
|
|
123
|
-
|
|
107
|
+
return context.isDepositOnlyFlow
|
|
108
|
+
|| (!context.hasActiveSession
|
|
109
|
+
&& !context.hasNordAccount);
|
|
124
110
|
}
|
|
125
111
|
},
|
|
126
112
|
// Global recovery transition (can happen from any state upon recovery)
|
|
127
113
|
{
|
|
128
114
|
from: [
|
|
129
115
|
FlowState.ERROR,
|
|
130
|
-
FlowState.IDLE,
|
|
131
116
|
FlowState.CONNECTING_WALLET,
|
|
132
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
133
117
|
FlowState.CHAIN_SELECTION,
|
|
134
118
|
FlowState.AMOUNT_INPUT,
|
|
135
119
|
FlowState.DEPOSIT_PROGRESS,
|
|
136
120
|
],
|
|
137
121
|
to: FlowState.DEPOSIT_SUCCESS,
|
|
138
122
|
condition: function (context) {
|
|
139
|
-
return
|
|
140
|
-
|
|
123
|
+
return context.isDepositOnlyFlow
|
|
124
|
+
|| (!context.hasActiveSession
|
|
125
|
+
&& context.hasNordAccount);
|
|
141
126
|
}
|
|
142
127
|
},
|
|
143
128
|
// Global recovery transition (can happen from any state upon recovery)
|
|
144
129
|
{
|
|
145
130
|
from: [
|
|
146
|
-
FlowState.IDLE,
|
|
147
131
|
FlowState.CONNECTING_WALLET,
|
|
148
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
149
132
|
FlowState.CHAIN_SELECTION,
|
|
150
133
|
FlowState.AMOUNT_INPUT,
|
|
151
134
|
FlowState.DEPOSIT_PROGRESS,
|
|
@@ -161,9 +144,7 @@ export var STATE_TRANSITIONS = [
|
|
|
161
144
|
// Global recovery transition (can happen from any state upon recovery)
|
|
162
145
|
{
|
|
163
146
|
from: [
|
|
164
|
-
FlowState.IDLE,
|
|
165
147
|
FlowState.CONNECTING_WALLET,
|
|
166
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
167
148
|
FlowState.CHAIN_SELECTION,
|
|
168
149
|
FlowState.AMOUNT_INPUT,
|
|
169
150
|
FlowState.DEPOSIT_PROGRESS,
|
|
@@ -181,23 +162,6 @@ export var STATE_TRANSITIONS = [
|
|
|
181
162
|
{
|
|
182
163
|
from: [
|
|
183
164
|
FlowState.CONNECTING_WALLET,
|
|
184
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
185
|
-
FlowState.CHAIN_SELECTION,
|
|
186
|
-
FlowState.AMOUNT_INPUT,
|
|
187
|
-
FlowState.DEPOSIT_PROGRESS,
|
|
188
|
-
FlowState.DEPOSIT_SUCCESS,
|
|
189
|
-
FlowState.AUTH_LOADING,
|
|
190
|
-
FlowState.FINAL_SUCCESS,
|
|
191
|
-
FlowState.ERROR,
|
|
192
|
-
],
|
|
193
|
-
to: FlowState.IDLE,
|
|
194
|
-
},
|
|
195
|
-
// Global recovery transition (can happen from any state upon recovery)
|
|
196
|
-
{
|
|
197
|
-
from: [
|
|
198
|
-
FlowState.IDLE,
|
|
199
|
-
FlowState.CONNECTING_WALLET,
|
|
200
|
-
FlowState.ETH_TO_SOL_AUTH,
|
|
201
165
|
FlowState.CHAIN_SELECTION,
|
|
202
166
|
FlowState.AMOUNT_INPUT,
|
|
203
167
|
FlowState.DEPOSIT_PROGRESS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,SAAS,CAAC;AAErD,MAAM,CAAC,IAAM,cAAc,GAAG,+BAA+B,CAAC;AAC9D,MAAM,CAAC,IAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,IAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,MAAM,CAAC,IAAM,WAAW,GAAG,KAAK,CAAC;AACjC,MAAM,CAAC,IAAM,WAAW,GAAG,KAAK,CAAC;AAEjC,MAAM,CAAC,IAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC;IAChE,IAAI,EAAE,aAAM,CAAC,GAAG,CAAC,CAAE;IACnB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,CAAC;CACZ,CAAC,EAJ+D,CAI/D,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC9B;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,mBAAmB;KAC1B;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;KACxB;CACF,CAAC;AAEF,MAAM,CAAC,IAAM,MAAM,GAAG;IACpB;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,6BAA6B;KACpC;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,4BAA4B;KACnC;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,6BAA6B;KACpC;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,6BAA6B;KACpC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAsB;IAElD,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/Modal/NordFlow/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,SAAS,CAAC;AAErD,MAAM,CAAC,IAAM,cAAc,GAAG,+BAA+B,CAAC;AAC9D,MAAM,CAAC,IAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,IAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,MAAM,CAAC,IAAM,WAAW,GAAG,KAAK,CAAC;AACjC,MAAM,CAAC,IAAM,WAAW,GAAG,KAAK,CAAC;AAEjC,MAAM,CAAC,IAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC;IAChE,IAAI,EAAE,aAAM,CAAC,GAAG,CAAC,CAAE;IACnB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,CAAC;CACZ,CAAC,EAJ+D,CAI/D,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC9B;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,mBAAmB;KAC1B;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;KACxB;CACF,CAAC;AAEF,MAAM,CAAC,IAAM,MAAM,GAAG;IACpB;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,6BAA6B;KACpC;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,4BAA4B;KACnC;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,6BAA6B;KACpC;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,6BAA6B;KACpC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAsB;IAElD,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,KAAK;SAChB;QACD,EAAE,EAAE,SAAS,CAAC,iBAAiB;QAC/B,SAAS,EAAE,UAAC,OAAO;YACjB,OAAA,CAAC,OAAO,CAAC,gBAAgB;mBACtB,CAAC,OAAO,CAAC,cAAc;QAD1B,CAC0B;KAC7B;IAED,wEAAwE;IACxE;QACE,IAAI,EAAE,SAAS,CAAC,YAAY;QAC5B,EAAE,EAAE,SAAS,CAAC,eAAe;KAC9B;IAED,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,KAAK;YACf,SAAS,CAAC,iBAAiB;SAC5B;QACD,EAAE,EAAE,SAAS,CAAC,eAAe;QAC7B,SAAS,EAAE,UAAC,OAAO;YACjB,OAAA,CAAC,OAAO,CAAC,gBAAgB;mBACtB,CAAC,OAAO,CAAC,cAAc;QAD1B,CAC0B;KAC7B;IAED,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,KAAK;YACf,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;SACvB;QACD,EAAE,EAAE,SAAS,CAAC,YAAY;QAC1B,SAAS,EAAE,UAAC,OAAO;YACjB,OAAA,OAAO,CAAC,iBAAiB;mBACtB,CACD,CAAC,OAAO,CAAC,gBAAgB;uBACtB,CAAC,OAAO,CAAC,cAAc,CAC3B;QAJD,CAIC;KACJ;IAED,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,KAAK;YACf,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;SACvB;QACD,EAAE,EAAE,SAAS,CAAC,gBAAgB;QAC9B,SAAS,EAAE,UAAC,OAAO;YACjB,OAAA,OAAO,CAAC,iBAAiB;mBACtB,CACD,CAAC,OAAO,CAAC,gBAAgB;uBACtB,CAAC,OAAO,CAAC,cAAc,CAC3B;QAJD,CAIC;KACJ;IAED,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,KAAK;YACf,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,gBAAgB;SAC3B;QACD,EAAE,EAAE,SAAS,CAAC,eAAe;QAC7B,SAAS,EAAE,UAAC,OAAO;YACjB,OAAA,OAAO,CAAC,iBAAiB;mBACtB,CACD,CAAC,OAAO,CAAC,gBAAgB;uBACtB,OAAO,CAAC,cAAc,CAC1B;QAJD,CAIC;KACJ;IAED,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,gBAAgB;YAC1B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,KAAK;SAChB;QACD,EAAE,EAAE,SAAS,CAAC,YAAY;QAC1B,SAAS,EAAE,UAAC,OAAO;YACjB,OAAA,CAAC,OAAO,CAAC,gBAAgB;mBACtB,OAAO,CAAC,cAAc;QADzB,CACyB;KAC5B;IACD,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,gBAAgB;YAC1B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,KAAK;SAChB;QACD,EAAE,EAAE,SAAS,CAAC,aAAa;QAC3B,SAAS,EAAE,UAAC,OAAO;YACjB,OAAA,OAAO,CAAC,gBAAgB;mBACrB,OAAO,CAAC,cAAc;QADzB,CACyB;KAC5B;IACD,uEAAuE;IACvE;QACE,IAAI,EAAE;YACJ,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,gBAAgB;YAC1B,SAAS,CAAC,eAAe;YACzB,SAAS,CAAC,YAAY;YACtB,SAAS,CAAC,aAAa;SACxB;QACD,EAAE,EAAE,SAAS,CAAC,KAAK;KACpB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAM,sBAAsB,GAAG,iCAAiC,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa","sourcesContent":["import { FlowState, StateTransition } from './types';\n\nexport const ANIMATION_EASE = 'cubic-bezier(0.16, 1, 0.3, 1)';\nexport const TYPING_INTERVAL = 50;\nexport const ANIMATION_DURATION = 3000;\n\nexport const MIN_DEPOSIT = 10000;\nexport const MAX_DEPOSIT = 10000;\n\nexport const INITIAL_APPS = Array.from({ length: 20 }, (_, i) => ({\n name: `App${i + 1}`,\n color: '#ff2b1f',\n progress: 0,\n}));\n\n/**\n * Available chains for deposit\n */\nexport const AVAILABLE_CHAINS = [\n {\n id: 'ethereum',\n name: 'Ethereum',\n logo: 'ethereum-logo.svg',\n },\n {\n id: 'solana',\n name: 'Solana',\n logo: 'solana-logo.svg',\n },\n];\n\nexport const CHAINS = [\n {\n id: 'ethereum',\n name: 'Ethereum',\n logo: '/images/chains/ethereum.svg',\n },\n {\n id: 'polygon',\n name: 'Polygon',\n logo: '/images/chains/polygon.svg',\n },\n {\n id: 'arbitrum',\n name: 'Arbitrum',\n logo: '/images/chains/arbitrum.svg',\n },\n {\n id: 'optimism',\n name: 'Optimism',\n logo: '/images/chains/optimism.svg',\n },\n];\n\n/**\n * State machine transitions\n * Defines all possible transitions between states and their conditions\n */\nexport const STATE_TRANSITIONS: StateTransition[] = [\n\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.ERROR,\n ],\n to: FlowState.CONNECTING_WALLET,\n condition: (context) =>\n !context.hasActiveSession\n && !context.hasNordAccount\n },\n\n // Allow navigating back to chain selection from the amount input screen\n {\n from: FlowState.AMOUNT_INPUT,\n to: FlowState.CHAIN_SELECTION,\n },\n\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.ERROR,\n FlowState.CONNECTING_WALLET,\n ],\n to: FlowState.CHAIN_SELECTION,\n condition: (context) =>\n !context.hasActiveSession\n && !context.hasNordAccount\n },\n\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.ERROR,\n FlowState.CONNECTING_WALLET,\n FlowState.CHAIN_SELECTION,\n FlowState.AMOUNT_INPUT,\n ],\n to: FlowState.AMOUNT_INPUT,\n condition: (context) =>\n context.isDepositOnlyFlow\n || (\n !context.hasActiveSession\n && !context.hasNordAccount\n )\n },\n\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.ERROR,\n FlowState.CONNECTING_WALLET,\n FlowState.CHAIN_SELECTION,\n FlowState.AMOUNT_INPUT,\n ],\n to: FlowState.DEPOSIT_PROGRESS,\n condition: (context) =>\n context.isDepositOnlyFlow\n || (\n !context.hasActiveSession\n && !context.hasNordAccount\n )\n },\n\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.ERROR,\n FlowState.CONNECTING_WALLET,\n FlowState.CHAIN_SELECTION,\n FlowState.AMOUNT_INPUT,\n FlowState.DEPOSIT_PROGRESS,\n ],\n to: FlowState.DEPOSIT_SUCCESS,\n condition: (context) =>\n context.isDepositOnlyFlow\n || (\n !context.hasActiveSession\n && context.hasNordAccount\n )\n },\n\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.CONNECTING_WALLET,\n FlowState.CHAIN_SELECTION,\n FlowState.AMOUNT_INPUT,\n FlowState.DEPOSIT_PROGRESS,\n FlowState.DEPOSIT_SUCCESS,\n FlowState.ERROR,\n ],\n to: FlowState.AUTH_LOADING,\n condition: (context) =>\n !context.hasActiveSession\n && context.hasNordAccount\n },\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.CONNECTING_WALLET,\n FlowState.CHAIN_SELECTION,\n FlowState.AMOUNT_INPUT,\n FlowState.DEPOSIT_PROGRESS,\n FlowState.DEPOSIT_SUCCESS,\n FlowState.AUTH_LOADING,\n FlowState.ERROR,\n ],\n to: FlowState.FINAL_SUCCESS,\n condition: (context) =>\n context.hasActiveSession\n && context.hasNordAccount\n },\n // Global recovery transition (can happen from any state upon recovery)\n {\n from: [\n FlowState.CONNECTING_WALLET,\n FlowState.CHAIN_SELECTION,\n FlowState.AMOUNT_INPUT,\n FlowState.DEPOSIT_PROGRESS,\n FlowState.DEPOSIT_SUCCESS,\n FlowState.AUTH_LOADING,\n FlowState.FINAL_SUCCESS,\n ],\n to: FlowState.ERROR,\n },\n];\n\n/**\n * Local storage key for persisting flow state\n */\nexport const FLOW_STATE_STORAGE_KEY = 'n1_wallet_connection_flow_state';\n\n/**\n * Time in milliseconds after which a persisted state is considered stale\n */\nexport const STATE_EXPIRY_TIME = 30 * 60 * 1000; // 30 minutes\n"]}
|
|
@@ -37,10 +37,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
38
38
|
import { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
39
39
|
import { getExplorerUrl, } from '../../../Logic/transactionManager';
|
|
40
|
-
import { useN1WalletContext
|
|
40
|
+
import { useN1WalletContext } from '../../../Provider/hooks';
|
|
41
41
|
import { logger } from '../../../utils/logger';
|
|
42
|
+
import { AVAILABLE_CHAINS } from '../constants';
|
|
42
43
|
import { FlowState } from '../types';
|
|
43
44
|
import { useFlowStateContext } from './FlowContext';
|
|
45
|
+
import { clearLastDepositRecord, saveLastDepositRecord } from '../utils/depositStorage';
|
|
44
46
|
// Create the context with a default value
|
|
45
47
|
var DepositContext = createContext(undefined);
|
|
46
48
|
/**
|
|
@@ -49,10 +51,9 @@ var DepositContext = createContext(undefined);
|
|
|
49
51
|
export var DepositProvider = function (_a) {
|
|
50
52
|
var children = _a.children;
|
|
51
53
|
// Get flow state context
|
|
52
|
-
var _b = useFlowStateContext(), state = _b.state, context = _b.context, transition = _b.transition, updateContext = _b.updateContext;
|
|
54
|
+
var _b = useFlowStateContext(), state = _b.state, context = _b.context, transition = _b.transition, updateContext = _b.updateContext, isDebugOverride = _b.isDebugOverride;
|
|
53
55
|
// Get wallet context
|
|
54
|
-
var _c = useN1WalletContext(), address = _c.address, nord = _c.nord,
|
|
55
|
-
var sessionMode = useN1WalletInternalContext().sessionMode;
|
|
56
|
+
var _c = useN1WalletContext(), address = _c.address, nord = _c.nord, nordUser = _c.nordUser;
|
|
56
57
|
// chain
|
|
57
58
|
var _d = useState(context.selectedChain), selectedChain = _d[0], setSelectedChain = _d[1];
|
|
58
59
|
// transaction & deposit
|
|
@@ -73,6 +74,8 @@ export var DepositProvider = function (_a) {
|
|
|
73
74
|
logger.error('Flow error:', error);
|
|
74
75
|
transition(FlowState.ERROR, { error: error });
|
|
75
76
|
}, [transition]);
|
|
77
|
+
var authInFlightRef = useRef(false);
|
|
78
|
+
var waitingForNordUserRef = useRef(false);
|
|
76
79
|
/**
|
|
77
80
|
* Authenticate session
|
|
78
81
|
*/
|
|
@@ -81,12 +84,22 @@ export var DepositProvider = function (_a) {
|
|
|
81
84
|
return __generator(this, function (_a) {
|
|
82
85
|
switch (_a.label) {
|
|
83
86
|
case 0:
|
|
84
|
-
|
|
87
|
+
if (authInFlightRef.current) {
|
|
88
|
+
return [2 /*return*/];
|
|
89
|
+
}
|
|
90
|
+
authInFlightRef.current = true;
|
|
91
|
+
_a.label = 1;
|
|
92
|
+
case 1:
|
|
93
|
+
_a.trys.push([1, 4, 5, 6]);
|
|
85
94
|
// Step 1: Tell user to sign transaction
|
|
86
95
|
setAuthStatusMessage('Please sign the transaction to authenticate your session');
|
|
87
96
|
if (!nordUser) {
|
|
88
|
-
|
|
97
|
+
waitingForNordUserRef.current = true;
|
|
98
|
+
setAuthStatus('loading');
|
|
99
|
+
setAuthStatusMessage('Preparing your Nord session…');
|
|
100
|
+
return [2 /*return*/];
|
|
89
101
|
}
|
|
102
|
+
waitingForNordUserRef.current = false;
|
|
90
103
|
// Step 2: Call nordUser.refreshSession and get sessionId
|
|
91
104
|
setAuthStatusMessage('Session is being authenticated...');
|
|
92
105
|
sessionPubKey = nordUser.sessionPubKey;
|
|
@@ -94,13 +107,14 @@ export var DepositProvider = function (_a) {
|
|
|
94
107
|
throw new Error('Session public key is not available');
|
|
95
108
|
}
|
|
96
109
|
// Refresh the session
|
|
97
|
-
return [4 /*yield*/, nordUser.refreshSession(
|
|
98
|
-
case
|
|
110
|
+
return [4 /*yield*/, nordUser.refreshSession()];
|
|
111
|
+
case 2:
|
|
99
112
|
// Refresh the session
|
|
100
113
|
_a.sent();
|
|
101
114
|
return [4 /*yield*/, nordUser.updateAccountId()];
|
|
102
|
-
case
|
|
115
|
+
case 3:
|
|
103
116
|
_a.sent();
|
|
117
|
+
console.log('nordUser', nordUser);
|
|
104
118
|
sessionId = nordUser.sessionId;
|
|
105
119
|
if (!sessionId) {
|
|
106
120
|
throw new Error('Failed to get session ID after refresh');
|
|
@@ -120,17 +134,33 @@ export var DepositProvider = function (_a) {
|
|
|
120
134
|
setTimeout(function () {
|
|
121
135
|
transition(FlowState.FINAL_SUCCESS, { hasActiveSession: true, hasNordAccount: true });
|
|
122
136
|
}, 100);
|
|
123
|
-
return [3 /*break*/,
|
|
124
|
-
case
|
|
137
|
+
return [3 /*break*/, 6];
|
|
138
|
+
case 4:
|
|
125
139
|
error_1 = _a.sent();
|
|
126
140
|
console.error('Authentication error:', error_1);
|
|
127
141
|
setAuthStatus('error');
|
|
128
142
|
setAuthErrorMessage(error_1 instanceof Error ? error_1.message : 'Unknown error occurred');
|
|
129
|
-
return [3 /*break*/,
|
|
130
|
-
case
|
|
143
|
+
return [3 /*break*/, 6];
|
|
144
|
+
case 5:
|
|
145
|
+
authInFlightRef.current = false;
|
|
146
|
+
return [7 /*endfinally*/];
|
|
147
|
+
case 6: return [2 /*return*/];
|
|
131
148
|
}
|
|
132
149
|
});
|
|
133
|
-
}); }, [
|
|
150
|
+
}); }, [
|
|
151
|
+
updateContext,
|
|
152
|
+
transition,
|
|
153
|
+
address,
|
|
154
|
+
nordUser,
|
|
155
|
+
setAuthStatus,
|
|
156
|
+
setAuthStatusMessage,
|
|
157
|
+
setAuthErrorMessage,
|
|
158
|
+
]);
|
|
159
|
+
useEffect(function () {
|
|
160
|
+
if (waitingForNordUserRef.current && nordUser) {
|
|
161
|
+
performAuth();
|
|
162
|
+
}
|
|
163
|
+
}, [nordUser, performAuth]);
|
|
134
164
|
/**
|
|
135
165
|
* Update amount for deposit
|
|
136
166
|
*/
|
|
@@ -147,9 +177,10 @@ export var DepositProvider = function (_a) {
|
|
|
147
177
|
* Start deposit process
|
|
148
178
|
*/
|
|
149
179
|
var startDeposit = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
150
|
-
var usdcToken, txId, accountInitialized, i, exists, result, depositError_1, errorMessage;
|
|
151
|
-
|
|
152
|
-
|
|
180
|
+
var usdcToken, txId, accountInitialized, i, exists, result, depositRecord, depositError_1, errorMessage;
|
|
181
|
+
var _a, _b, _c;
|
|
182
|
+
return __generator(this, function (_d) {
|
|
183
|
+
switch (_d.label) {
|
|
153
184
|
case 0:
|
|
154
185
|
if (isDepositing)
|
|
155
186
|
return [2 /*return*/];
|
|
@@ -160,29 +191,29 @@ export var DepositProvider = function (_a) {
|
|
|
160
191
|
}
|
|
161
192
|
setIsDepositing(true);
|
|
162
193
|
transition(FlowState.DEPOSIT_PROGRESS);
|
|
163
|
-
|
|
194
|
+
_d.label = 1;
|
|
164
195
|
case 1:
|
|
165
|
-
|
|
196
|
+
_d.trys.push([1, 8, , 9]);
|
|
166
197
|
usdcToken = nord.tokens.find(function (t) { return t.symbol === 'USDC'; });
|
|
167
198
|
return [4 /*yield*/, nordUser.depositSpl(parseFloat(amount), usdcToken.tokenId)];
|
|
168
199
|
case 2:
|
|
169
|
-
txId =
|
|
200
|
+
txId = _d.sent();
|
|
170
201
|
accountInitialized = false;
|
|
171
202
|
i = 0;
|
|
172
|
-
|
|
203
|
+
_d.label = 3;
|
|
173
204
|
case 3:
|
|
174
205
|
if (!(i < 70)) return [3 /*break*/, 7];
|
|
175
206
|
return [4 /*yield*/, (nord === null || nord === void 0 ? void 0 : nord.getUser({ pubkey: address }))];
|
|
176
207
|
case 4:
|
|
177
|
-
exists =
|
|
208
|
+
exists = _d.sent();
|
|
178
209
|
if (exists) {
|
|
179
210
|
accountInitialized = true;
|
|
180
211
|
return [3 /*break*/, 7];
|
|
181
212
|
}
|
|
182
213
|
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 5000); })];
|
|
183
214
|
case 5:
|
|
184
|
-
|
|
185
|
-
|
|
215
|
+
_d.sent();
|
|
216
|
+
_d.label = 6;
|
|
186
217
|
case 6:
|
|
187
218
|
i++;
|
|
188
219
|
return [3 /*break*/, 3];
|
|
@@ -202,14 +233,28 @@ export var DepositProvider = function (_a) {
|
|
|
202
233
|
status: 'Completed',
|
|
203
234
|
explorerUrl: getExplorerUrl(txId),
|
|
204
235
|
};
|
|
236
|
+
depositRecord = {
|
|
237
|
+
transactionId: txId,
|
|
238
|
+
amount: amount,
|
|
239
|
+
tokenSymbol: 'USDC',
|
|
240
|
+
chainId: (_a = context.selectedChainId) !== null && _a !== void 0 ? _a : (selectedChain !== null && selectedChain !== void 0 ? selectedChain : 'solana'),
|
|
241
|
+
chainName: (_b = context.selectedChain) !== null && _b !== void 0 ? _b : (selectedChain !== null && selectedChain !== void 0 ? selectedChain : 'Solana'),
|
|
242
|
+
chainNetwork: (_c = context.selectedChainNetwork) !== null && _c !== void 0 ? _c : null,
|
|
243
|
+
timestamp: Date.now(),
|
|
244
|
+
};
|
|
245
|
+
saveLastDepositRecord(address, depositRecord);
|
|
205
246
|
// Update state with transaction result
|
|
206
247
|
setTransactionId(txId);
|
|
207
248
|
setTransactionResult(result);
|
|
208
249
|
logger.debug('Transaction completed successfully');
|
|
209
|
-
transition(FlowState.DEPOSIT_SUCCESS, {
|
|
250
|
+
transition(FlowState.DEPOSIT_SUCCESS, {
|
|
251
|
+
transactionId: txId,
|
|
252
|
+
hasNordAccount: true,
|
|
253
|
+
lastDeposit: depositRecord,
|
|
254
|
+
});
|
|
210
255
|
return [3 /*break*/, 9];
|
|
211
256
|
case 8:
|
|
212
|
-
depositError_1 =
|
|
257
|
+
depositError_1 = _d.sent();
|
|
213
258
|
logger.warn('Error using depositSpl, falling back to mock implementation:', depositError_1);
|
|
214
259
|
setIsDepositing(false);
|
|
215
260
|
errorMessage = depositError_1 instanceof Error
|
|
@@ -227,36 +272,42 @@ export var DepositProvider = function (_a) {
|
|
|
227
272
|
selectedChain,
|
|
228
273
|
amount,
|
|
229
274
|
address,
|
|
230
|
-
sessionMode,
|
|
231
275
|
transition,
|
|
232
276
|
handleError,
|
|
233
277
|
nord,
|
|
234
|
-
signMessageWithSessionKey,
|
|
235
278
|
nordUser,
|
|
279
|
+
context.selectedChain,
|
|
280
|
+
context.selectedChainId,
|
|
281
|
+
context.selectedChainNetwork,
|
|
236
282
|
]);
|
|
237
283
|
/**
|
|
238
284
|
* Complete the deposit process and move to the next screen
|
|
239
285
|
*/
|
|
240
286
|
var completeDeposit = useCallback(function () {
|
|
287
|
+
clearLastDepositRecord(address);
|
|
288
|
+
updateContext({ lastDeposit: null });
|
|
289
|
+
if (context.isDepositOnlyFlow) {
|
|
290
|
+
transition(FlowState.FINAL_SUCCESS, {
|
|
291
|
+
hasNordAccount: true,
|
|
292
|
+
hasActiveSession: true,
|
|
293
|
+
isDepositOnlyFlow: false,
|
|
294
|
+
});
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
241
297
|
// Check if user has an active session to determine the next state
|
|
242
298
|
if (context.hasActiveSession) {
|
|
243
299
|
// If user has an active session, go directly to FINAL_SUCCESS
|
|
244
|
-
transition(FlowState.FINAL_SUCCESS, {
|
|
300
|
+
transition(FlowState.FINAL_SUCCESS, {
|
|
301
|
+
hasNordAccount: true,
|
|
302
|
+
hasActiveSession: true,
|
|
303
|
+
isDepositOnlyFlow: false,
|
|
304
|
+
});
|
|
245
305
|
}
|
|
246
306
|
else {
|
|
247
|
-
//
|
|
248
|
-
|
|
249
|
-
var storedSessionId = localStorage.getItem(sessionIdKey);
|
|
250
|
-
if (storedSessionId !== null) {
|
|
251
|
-
// If we have a sessionId in localStorage (even if it's 0), go directly to FINAL_SUCCESS
|
|
252
|
-
transition(FlowState.FINAL_SUCCESS, { hasNordAccount: true, hasActiveSession: true });
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
// If user doesn't have an active session and no sessionId in localStorage, go to NORD_AUTH
|
|
256
|
-
transition(FlowState.AUTH_LOADING, { hasNordAccount: true });
|
|
257
|
-
}
|
|
307
|
+
// If user doesn't have an active session, go to authentication flow
|
|
308
|
+
transition(FlowState.AUTH_LOADING, { hasNordAccount: true });
|
|
258
309
|
}
|
|
259
|
-
}, [context.hasActiveSession, transition, address]);
|
|
310
|
+
}, [context.hasActiveSession, context.isDepositOnlyFlow, transition, address, updateContext]);
|
|
260
311
|
// Create the context value
|
|
261
312
|
var contextValue = {
|
|
262
313
|
amount: amount,
|
|
@@ -289,6 +340,26 @@ export var DepositProvider = function (_a) {
|
|
|
289
340
|
// Update the ref to the current context
|
|
290
341
|
prevContextRef.current = context;
|
|
291
342
|
}, [context]);
|
|
343
|
+
useEffect(function () {
|
|
344
|
+
var _a, _b, _c, _d;
|
|
345
|
+
if (!isDebugOverride || state !== FlowState.DEPOSIT_SUCCESS || transactionResult) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
var mockTransactionId = (_a = context.transactionId) !== null && _a !== void 0 ? _a : 'debug-tx-12345';
|
|
349
|
+
var fallbackChain = (_d = (_b = context.selectedChain) !== null && _b !== void 0 ? _b : (_c = AVAILABLE_CHAINS[0]) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : 'Solana';
|
|
350
|
+
setTransactionId(mockTransactionId);
|
|
351
|
+
setTransactionResult({
|
|
352
|
+
success: true,
|
|
353
|
+
transactionId: mockTransactionId,
|
|
354
|
+
amount: context.amount || '1,250',
|
|
355
|
+
tokenSymbol: 'USDC',
|
|
356
|
+
fromAddress: address || 'Debug Wallet',
|
|
357
|
+
toAddress: 'Nord Account',
|
|
358
|
+
networkName: fallbackChain,
|
|
359
|
+
status: 'Completed',
|
|
360
|
+
explorerUrl: getExplorerUrl(mockTransactionId),
|
|
361
|
+
});
|
|
362
|
+
}, [isDebugOverride, state, transactionResult, context, address]);
|
|
292
363
|
return (_jsx(DepositContext.Provider, { value: contextValue, children: children }));
|
|
293
364
|
};
|
|
294
365
|
/**
|