@n1xyz/wallet-widget 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Logic/getPseudoName.js +1 -0
- package/dist/Logic/getPseudoName.js.map +1 -0
- package/dist/Logic/sessionManager.js +1 -0
- package/dist/Logic/sessionManager.js.map +1 -0
- package/dist/Logic/transactionManager.js +1 -0
- package/dist/Logic/transactionManager.js.map +1 -0
- package/dist/Logic/utils.js +1 -0
- package/dist/Logic/utils.js.map +1 -0
- package/dist/Logic/words.js +1 -0
- package/dist/Logic/words.js.map +1 -0
- package/dist/Modal/LoadingFallback.js +2 -1
- package/dist/Modal/LoadingFallback.js.map +1 -0
- package/dist/Modal/N1WalletModal.js +5 -5
- package/dist/Modal/N1WalletModal.js.map +1 -0
- package/dist/Modal/NTSFlow/LoadingFallback.js +2 -1
- package/dist/Modal/NTSFlow/LoadingFallback.js.map +1 -0
- package/dist/Modal/NTSFlow/NTSFlow.js +1 -0
- package/dist/Modal/NTSFlow/NTSFlow.js.map +1 -0
- package/dist/Modal/NTSFlow/components/BackButton.js +3 -2
- package/dist/Modal/NTSFlow/components/BackButton.js.map +1 -0
- package/dist/Modal/NTSFlow/components/ModalHeader.js +2 -1
- package/dist/Modal/NTSFlow/components/ModalHeader.js.map +1 -0
- package/dist/Modal/NTSFlow/index.js +1 -0
- package/dist/Modal/NTSFlow/index.js.map +1 -0
- package/dist/Modal/NTSFlow/views/ConnectView.js +3 -2
- package/dist/Modal/NTSFlow/views/ConnectView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/CreateSessionView.js +6 -5
- package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/CreateUserView.js +2 -1
- package/dist/Modal/NTSFlow/views/CreateUserView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/NoWhitelistView.js +4 -3
- package/dist/Modal/NTSFlow/views/NoWhitelistView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/SigningView.js +2 -1
- package/dist/Modal/NTSFlow/views/SigningView.js.map +1 -0
- package/dist/Modal/NTSFlow/views/SuccessView.js +1 -0
- package/dist/Modal/NTSFlow/views/SuccessView.js.map +1 -0
- package/dist/Modal/NordFlow/NordFlow.js +8 -12
- package/dist/Modal/NordFlow/NordFlow.js.map +1 -0
- package/dist/Modal/NordFlow/components/ChainButton.js +6 -5
- package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -0
- package/dist/Modal/NordFlow/components/EVMChainsButton.js +5 -4
- package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -0
- package/dist/Modal/NordFlow/components/ImageWithFallback.js +2 -1
- package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -0
- package/dist/Modal/NordFlow/components/LoadingSquares.js +2 -1
- package/dist/Modal/NordFlow/components/LoadingSquares.js.map +1 -0
- package/dist/Modal/NordFlow/components/MoreButton.js +5 -4
- package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -0
- package/dist/Modal/NordFlow/components/TransactionTable.js +7 -6
- package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -0
- package/dist/Modal/NordFlow/components/WaitingMessage.js +2 -1
- package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -0
- package/dist/Modal/NordFlow/components/index.js +1 -0
- package/dist/Modal/NordFlow/components/index.js.map +1 -0
- package/dist/Modal/NordFlow/constants.js +1 -0
- package/dist/Modal/NordFlow/constants.js.map +1 -0
- package/dist/Modal/NordFlow/hoc/index.js +1 -0
- package/dist/Modal/NordFlow/hoc/index.js.map +1 -0
- package/dist/Modal/NordFlow/hoc/withImageFallback.js +1 -0
- package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/index.js +1 -0
- package/dist/Modal/NordFlow/hooks/index.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useDepositFlow.js +31 -30
- package/dist/Modal/NordFlow/hooks/useDepositFlow.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useFlowState.js +44 -22
- package/dist/Modal/NordFlow/hooks/useFlowState.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useInterruptHandler.js +19 -16
- package/dist/Modal/NordFlow/hooks/useInterruptHandler.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useNordInstance.d.ts +0 -4
- package/dist/Modal/NordFlow/hooks/useNordInstance.js +65 -25
- package/dist/Modal/NordFlow/hooks/useNordInstance.js.map +1 -0
- package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js +73 -52
- package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js.map +1 -0
- package/dist/Modal/NordFlow/index.js +1 -0
- package/dist/Modal/NordFlow/index.js.map +1 -0
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +4 -3
- package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +5 -4
- package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +3 -2
- package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +3 -2
- package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +2 -1
- package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +5 -4
- package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +5 -4
- package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +3 -2
- package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +4 -3
- package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +1 -0
- package/dist/Modal/NordFlow/screens/index.js +1 -0
- package/dist/Modal/NordFlow/screens/index.js.map +1 -0
- package/dist/Modal/NordFlow/types.js +1 -0
- package/dist/Modal/NordFlow/types.js.map +1 -0
- package/dist/Modal/NordFlow/utils/imageUtils.js +1 -0
- package/dist/Modal/NordFlow/utils/imageUtils.js.map +1 -0
- package/dist/Modal/NordFlow/utils/index.js +1 -0
- package/dist/Modal/NordFlow/utils/index.js.map +1 -0
- package/dist/Modal/NordFlow/utils/nordUtils.js +1 -0
- package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -0
- package/dist/Modal/NordFlow/utils/persistence.js +1 -0
- package/dist/Modal/NordFlow/utils/persistence.js.map +1 -0
- package/dist/Modal/Sidebar/N1Sidebar.js +12 -10
- package/dist/Modal/Sidebar/N1Sidebar.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js +6 -5
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js +4 -3
- package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js +3 -2
- package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js +3 -2
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js +2 -1
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js +5 -4
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js +7 -6
- package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js +2 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js +4 -3
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js +8 -7
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js +14 -13
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js +2 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js +3 -2
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js +2 -1
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js +6 -5
- package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js +2 -1
- package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js +6 -5
- package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js.map +1 -0
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js +5 -4
- package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js.map +1 -0
- package/dist/Provider/LazyWalletProvider.js +1 -0
- package/dist/Provider/LazyWalletProvider.js.map +1 -0
- package/dist/Provider/N1WalletProvider.js +3 -12
- package/dist/Provider/N1WalletProvider.js.map +1 -0
- package/dist/Provider/context.js +1 -0
- package/dist/Provider/context.js.map +1 -0
- package/dist/Provider/hooks.js +1 -0
- package/dist/Provider/hooks.js.map +1 -0
- package/dist/Provider/icons/CoinbaseWalletIcon.js +1 -0
- package/dist/Provider/icons/CoinbaseWalletIcon.js.map +1 -0
- package/dist/Provider/icons/ConnectionDotsSVG.js +1 -0
- package/dist/Provider/icons/ConnectionDotsSVG.js.map +1 -0
- package/dist/Provider/icons/MetamaskIcon.js +1 -0
- package/dist/Provider/icons/MetamaskIcon.js.map +1 -0
- package/dist/Provider/icons/PhantomIcon.js +1 -0
- package/dist/Provider/icons/PhantomIcon.js.map +1 -0
- package/dist/Provider/icons/UserIcon.js +1 -0
- package/dist/Provider/icons/UserIcon.js.map +1 -0
- package/dist/Provider/icons/WalletConnectIcon.js +1 -0
- package/dist/Provider/icons/WalletConnectIcon.js.map +1 -0
- package/dist/Provider/index.js +1 -0
- package/dist/Provider/index.js.map +1 -0
- package/dist/Provider/types.js +1 -0
- package/dist/Provider/types.js.map +1 -0
- package/dist/WidgetButton/N1ConnectButton.js +1 -0
- package/dist/WidgetButton/N1ConnectButton.js.map +1 -0
- package/dist/components/Logo.js +1 -0
- package/dist/components/Logo.js.map +1 -0
- package/dist/components/QRCodeLoader.js +2 -1
- package/dist/components/QRCodeLoader.js.map +1 -0
- package/dist/components/logos/ArbitrumLogo.js +1 -0
- package/dist/components/logos/ArbitrumLogo.js.map +1 -0
- package/dist/components/logos/BaseLogo.js +1 -0
- package/dist/components/logos/BaseLogo.js.map +1 -0
- package/dist/components/logos/BeraLogo.js +1 -0
- package/dist/components/logos/BeraLogo.js.map +1 -0
- package/dist/components/logos/BitcoinLogo.js +1 -0
- package/dist/components/logos/BitcoinLogo.js.map +1 -0
- package/dist/components/logos/EVMChainsGroup.js +2 -1
- package/dist/components/logos/EVMChainsGroup.js.map +1 -0
- package/dist/components/logos/EthereumLogo.js +1 -0
- package/dist/components/logos/EthereumLogo.js.map +1 -0
- package/dist/components/logos/HyperliquidLogo.js +1 -0
- package/dist/components/logos/HyperliquidLogo.js.map +1 -0
- package/dist/components/logos/MoreChainsGroup.js +2 -1
- package/dist/components/logos/MoreChainsGroup.js.map +1 -0
- package/dist/components/logos/OptimismLogo.js +1 -0
- package/dist/components/logos/OptimismLogo.js.map +1 -0
- package/dist/components/logos/SolanaLogo.js +1 -0
- package/dist/components/logos/SolanaLogo.js.map +1 -0
- package/dist/components/logos/index.js +1 -0
- package/dist/components/logos/index.js.map +1 -0
- package/dist/config/solana.js +1 -0
- package/dist/config/solana.js.map +1 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -0
- package/dist/errors/types.js +1 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/main.css +1 -1
- package/dist/utils/dynamicImports.js +1 -0
- package/dist/utils/dynamicImports.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.js +26 -2
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/shortenString.js +1 -0
- package/dist/utils/shortenString.js.map +1 -0
- package/package.json +2 -2
- package/dist/Modal/BackButton.d.ts +0 -3
- package/dist/Modal/BackButton.js +0 -26
- package/dist/Modal/ConnectView.d.ts +0 -1
- package/dist/Modal/ConnectView.js +0 -68
- package/dist/Modal/CreateSessionView.d.ts +0 -1
- package/dist/Modal/CreateSessionView.js +0 -248
- package/dist/Modal/CreateUserView.d.ts +0 -1
- package/dist/Modal/CreateUserView.js +0 -160
- package/dist/Modal/ModalHeader.d.ts +0 -1
- package/dist/Modal/ModalHeader.js +0 -20
- package/dist/Modal/NTSFlow/NordFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/Modal/NTSFlow/NordFlow/WalletConnectionFlow.js +0 -145
- package/dist/Modal/NTSFlow/NordFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/Modal/NTSFlow/NordFlow/components/AnimatedButton.js +0 -75
- package/dist/Modal/NTSFlow/NordFlow/components/ChainButton.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/components/ChainButton.js +0 -5
- package/dist/Modal/NTSFlow/NordFlow/components/LoadingSquares.d.ts +0 -1
- package/dist/Modal/NTSFlow/NordFlow/components/LoadingSquares.js +0 -5
- package/dist/Modal/NTSFlow/NordFlow/components/TransactionTable.d.ts +0 -13
- package/dist/Modal/NTSFlow/NordFlow/components/TransactionTable.js +0 -58
- package/dist/Modal/NTSFlow/NordFlow/components/WaitingMessage.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/components/WaitingMessage.js +0 -6
- package/dist/Modal/NTSFlow/NordFlow/components/index.d.ts +0 -5
- package/dist/Modal/NTSFlow/NordFlow/components/index.js +0 -5
- package/dist/Modal/NTSFlow/NordFlow/constants.d.ts +0 -37
- package/dist/Modal/NTSFlow/NordFlow/constants.js +0 -223
- package/dist/Modal/NTSFlow/NordFlow/hooks/index.d.ts +0 -8
- package/dist/Modal/NTSFlow/NordFlow/hooks/index.js +0 -8
- package/dist/Modal/NTSFlow/NordFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/hooks/useButtonTyping.js +0 -43
- package/dist/Modal/NTSFlow/NordFlow/hooks/useDepositFlow.d.ts +0 -38
- package/dist/Modal/NTSFlow/NordFlow/hooks/useDepositFlow.js +0 -166
- package/dist/Modal/NTSFlow/NordFlow/hooks/useFlowState.d.ts +0 -32
- package/dist/Modal/NTSFlow/NordFlow/hooks/useFlowState.js +0 -163
- package/dist/Modal/NTSFlow/NordFlow/hooks/useInterruptHandler.d.ts +0 -27
- package/dist/Modal/NTSFlow/NordFlow/hooks/useInterruptHandler.js +0 -101
- package/dist/Modal/NTSFlow/NordFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/Modal/NTSFlow/NordFlow/hooks/useNordSession.js +0 -193
- package/dist/Modal/NTSFlow/NordFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/Modal/NTSFlow/NordFlow/hooks/useTableValues.js +0 -69
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWalletConnect.d.ts +0 -30
- package/dist/Modal/NTSFlow/NordFlow/hooks/useWalletConnect.js +0 -132
- package/dist/Modal/NTSFlow/NordFlow/index.d.ts +0 -3
- package/dist/Modal/NTSFlow/NordFlow/index.js +0 -3
- package/dist/Modal/NTSFlow/NordFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/01-ConnectWalletScreen.js +0 -17
- package/dist/Modal/NTSFlow/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -47
- package/dist/Modal/NTSFlow/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/03-ChainSelectionScreen.js +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/04-AmountInputScreen.d.ts +0 -8
- package/dist/Modal/NTSFlow/NordFlow/screens/04-AmountInputScreen.js +0 -20
- package/dist/Modal/NTSFlow/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/05-DepositProgressScreen.js +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
- package/dist/Modal/NTSFlow/NordFlow/screens/06-DepositSuccessScreen.js +0 -99
- package/dist/Modal/NTSFlow/NordFlow/screens/07-NordAuthScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/07-NordAuthScreen.js +0 -14
- package/dist/Modal/NTSFlow/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/Modal/NTSFlow/NordFlow/screens/08-AuthLoadingScreen.js +0 -20
- package/dist/Modal/NTSFlow/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/Modal/NTSFlow/NordFlow/screens/09-FinalSuccessScreen.js +0 -18
- package/dist/Modal/NTSFlow/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/Modal/NTSFlow/NordFlow/screens/10-ErrorScreen.js +0 -13
- package/dist/Modal/NTSFlow/NordFlow/screens/index.d.ts +0 -10
- package/dist/Modal/NTSFlow/NordFlow/screens/index.js +0 -10
- package/dist/Modal/NTSFlow/NordFlow/types.d.ts +0 -105
- package/dist/Modal/NTSFlow/NordFlow/types.js +0 -34
- package/dist/Modal/NTSFlow/NordFlow/utils/persistence.d.ts +0 -24
- package/dist/Modal/NTSFlow/NordFlow/utils/persistence.js +0 -83
- package/dist/Modal/NoWhitelistView.d.ts +0 -1
- package/dist/Modal/NoWhitelistView.js +0 -42
- package/dist/Modal/NordFlow/NordFlowWrapper.d.ts +0 -11
- package/dist/Modal/NordFlow/NordFlowWrapper.js +0 -11
- package/dist/Modal/NordFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/Modal/NordFlow/WalletConnectionFlow.js +0 -145
- package/dist/Modal/NordFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/Modal/NordFlow/components/AnimatedButton.js +0 -75
- package/dist/Modal/NordFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/Modal/NordFlow/hooks/useButtonTyping.js +0 -43
- package/dist/Modal/NordFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/Modal/NordFlow/hooks/useNordSession.js +0 -391
- package/dist/Modal/NordFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/Modal/NordFlow/hooks/useTableValues.js +0 -69
- package/dist/Modal/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/Modal/NordFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/Modal/NordFlow/hooks/useWalletConnect.d.ts +0 -14
- package/dist/Modal/NordFlow/hooks/useWalletConnect.js +0 -221
- package/dist/Modal/NordFlow/index copy.d.ts +0 -1
- package/dist/Modal/NordFlow/index copy.js +0 -1
- package/dist/Modal/NordFlow/screens/07-NordAuthScreen.d.ts +0 -5
- package/dist/Modal/NordFlow/screens/07-NordAuthScreen.js +0 -17
- package/dist/Modal/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/Modal/NordFlow/screens/08-AuthLoadingScreen.js +0 -153
- package/dist/Modal/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/Modal/NordFlow/screens/09-FinalSuccessScreen.js +0 -47
- package/dist/Modal/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/Modal/NordFlow/screens/10-ErrorScreen.js +0 -62
- package/dist/Modal/Sidebar/NordTradingView/AccountSummary/AccountSummary.d.ts +0 -1
- package/dist/Modal/Sidebar/NordTradingView/AccountSummary/AccountSummary.js +0 -116
- package/dist/Modal/Sidebar/NordTradingView/TradeHistory/TradeHistory.d.ts +0 -5
- package/dist/Modal/Sidebar/NordTradingView/TradeHistory/TradeHistory.js +0 -138
- package/dist/Modal/SigningView.d.ts +0 -1
- package/dist/Modal/SigningView.js +0 -5
- package/dist/Modal/SuccessView.d.ts +0 -1
- package/dist/Modal/SuccessView.js +0 -10
- package/dist/NordFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/NordFlow/WalletConnectionFlow.js +0 -145
- package/dist/NordFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/NordFlow/components/AnimatedButton.js +0 -75
- package/dist/NordFlow/components/ChainButton.d.ts +0 -7
- package/dist/NordFlow/components/ChainButton.js +0 -5
- package/dist/NordFlow/components/LoadingSquares.d.ts +0 -1
- package/dist/NordFlow/components/LoadingSquares.js +0 -5
- package/dist/NordFlow/components/TransactionTable.d.ts +0 -13
- package/dist/NordFlow/components/TransactionTable.js +0 -58
- package/dist/NordFlow/components/WaitingMessage.d.ts +0 -6
- package/dist/NordFlow/components/WaitingMessage.js +0 -6
- package/dist/NordFlow/components/index.d.ts +0 -5
- package/dist/NordFlow/components/index.js +0 -5
- package/dist/NordFlow/constants.d.ts +0 -37
- package/dist/NordFlow/constants.js +0 -223
- package/dist/NordFlow/hooks/index.d.ts +0 -8
- package/dist/NordFlow/hooks/index.js +0 -8
- package/dist/NordFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/NordFlow/hooks/useButtonTyping.js +0 -43
- package/dist/NordFlow/hooks/useDepositFlow.d.ts +0 -38
- package/dist/NordFlow/hooks/useDepositFlow.js +0 -166
- package/dist/NordFlow/hooks/useFlowState.d.ts +0 -32
- package/dist/NordFlow/hooks/useFlowState.js +0 -163
- package/dist/NordFlow/hooks/useInterruptHandler.d.ts +0 -27
- package/dist/NordFlow/hooks/useInterruptHandler.js +0 -101
- package/dist/NordFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/NordFlow/hooks/useNordSession.js +0 -193
- package/dist/NordFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/NordFlow/hooks/useTableValues.js +0 -69
- package/dist/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/NordFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/NordFlow/hooks/useWalletConnect.d.ts +0 -30
- package/dist/NordFlow/hooks/useWalletConnect.js +0 -132
- package/dist/NordFlow/index.d.ts +0 -3
- package/dist/NordFlow/index.js +0 -3
- package/dist/NordFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
- package/dist/NordFlow/screens/01-ConnectWalletScreen.js +0 -17
- package/dist/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
- package/dist/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -47
- package/dist/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
- package/dist/NordFlow/screens/03-ChainSelectionScreen.js +0 -7
- package/dist/NordFlow/screens/04-AmountInputScreen.d.ts +0 -8
- package/dist/NordFlow/screens/04-AmountInputScreen.js +0 -20
- package/dist/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -7
- package/dist/NordFlow/screens/05-DepositProgressScreen.js +0 -6
- package/dist/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
- package/dist/NordFlow/screens/06-DepositSuccessScreen.js +0 -99
- package/dist/NordFlow/screens/07-NordAuthScreen.d.ts +0 -7
- package/dist/NordFlow/screens/07-NordAuthScreen.js +0 -14
- package/dist/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/NordFlow/screens/08-AuthLoadingScreen.js +0 -20
- package/dist/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/NordFlow/screens/09-FinalSuccessScreen.js +0 -18
- package/dist/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/NordFlow/screens/10-ErrorScreen.js +0 -13
- package/dist/NordFlow/screens/index.d.ts +0 -10
- package/dist/NordFlow/screens/index.js +0 -10
- package/dist/NordFlow/types.d.ts +0 -105
- package/dist/NordFlow/types.js +0 -34
- package/dist/NordFlow/utils/persistence.d.ts +0 -24
- package/dist/NordFlow/utils/persistence.js +0 -83
- package/dist/WalletConnectionFlow/WalletConnectionFlow.d.ts +0 -9
- package/dist/WalletConnectionFlow/WalletConnectionFlow.js +0 -145
- package/dist/WalletConnectionFlow/components/AnimatedButton.d.ts +0 -14
- package/dist/WalletConnectionFlow/components/AnimatedButton.js +0 -75
- package/dist/WalletConnectionFlow/components/ChainButton.d.ts +0 -7
- package/dist/WalletConnectionFlow/components/ChainButton.js +0 -5
- package/dist/WalletConnectionFlow/components/LoadingSquares.d.ts +0 -1
- package/dist/WalletConnectionFlow/components/LoadingSquares.js +0 -5
- package/dist/WalletConnectionFlow/components/TransactionTable.d.ts +0 -13
- package/dist/WalletConnectionFlow/components/TransactionTable.js +0 -58
- package/dist/WalletConnectionFlow/components/WaitingMessage.d.ts +0 -6
- package/dist/WalletConnectionFlow/components/WaitingMessage.js +0 -6
- package/dist/WalletConnectionFlow/components/index.d.ts +0 -5
- package/dist/WalletConnectionFlow/components/index.js +0 -5
- package/dist/WalletConnectionFlow/constants.d.ts +0 -37
- package/dist/WalletConnectionFlow/constants.js +0 -223
- package/dist/WalletConnectionFlow/hooks/index.d.ts +0 -8
- package/dist/WalletConnectionFlow/hooks/index.js +0 -8
- package/dist/WalletConnectionFlow/hooks/useButtonTyping.d.ts +0 -7
- package/dist/WalletConnectionFlow/hooks/useButtonTyping.js +0 -43
- package/dist/WalletConnectionFlow/hooks/useDepositFlow.d.ts +0 -38
- package/dist/WalletConnectionFlow/hooks/useDepositFlow.js +0 -166
- package/dist/WalletConnectionFlow/hooks/useFlowState.d.ts +0 -32
- package/dist/WalletConnectionFlow/hooks/useFlowState.js +0 -163
- package/dist/WalletConnectionFlow/hooks/useInterruptHandler.d.ts +0 -27
- package/dist/WalletConnectionFlow/hooks/useInterruptHandler.js +0 -101
- package/dist/WalletConnectionFlow/hooks/useNordSession.d.ts +0 -32
- package/dist/WalletConnectionFlow/hooks/useNordSession.js +0 -193
- package/dist/WalletConnectionFlow/hooks/useTableValues.d.ts +0 -2
- package/dist/WalletConnectionFlow/hooks/useTableValues.js +0 -69
- package/dist/WalletConnectionFlow/hooks/useWaitingMessage.d.ts +0 -6
- package/dist/WalletConnectionFlow/hooks/useWaitingMessage.js +0 -89
- package/dist/WalletConnectionFlow/hooks/useWalletConnect.d.ts +0 -30
- package/dist/WalletConnectionFlow/hooks/useWalletConnect.js +0 -132
- package/dist/WalletConnectionFlow/index.d.ts +0 -3
- package/dist/WalletConnectionFlow/index.js +0 -3
- package/dist/WalletConnectionFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/01-ConnectWalletScreen.js +0 -17
- package/dist/WalletConnectionFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/02-EvmWalletAuthScreen.js +0 -47
- package/dist/WalletConnectionFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/03-ChainSelectionScreen.js +0 -7
- package/dist/WalletConnectionFlow/screens/04-AmountInputScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/04-AmountInputScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/05-DepositProgressScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/05-DepositProgressScreen.js +0 -6
- package/dist/WalletConnectionFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/06-DepositSuccessScreen.js +0 -99
- package/dist/WalletConnectionFlow/screens/07-NordAuthScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/07-NordAuthScreen.js +0 -14
- package/dist/WalletConnectionFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/08-AuthLoadingScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
- package/dist/WalletConnectionFlow/screens/09-FinalSuccessScreen.js +0 -18
- package/dist/WalletConnectionFlow/screens/10-ErrorScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/10-ErrorScreen.js +0 -13
- package/dist/WalletConnectionFlow/screens/AmountInputScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/AmountInputScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/AppsTableScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/AppsTableScreen.js +0 -28
- package/dist/WalletConnectionFlow/screens/AuthLoadingScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/AuthLoadingScreen.js +0 -20
- package/dist/WalletConnectionFlow/screens/ChainSelectionScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/ChainSelectionScreen.js +0 -7
- package/dist/WalletConnectionFlow/screens/ConnectWalletScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/ConnectWalletScreen.js +0 -17
- package/dist/WalletConnectionFlow/screens/DepositProgressScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/DepositProgressScreen.js +0 -6
- package/dist/WalletConnectionFlow/screens/DepositSuccessScreen.d.ts +0 -8
- package/dist/WalletConnectionFlow/screens/DepositSuccessScreen.js +0 -99
- package/dist/WalletConnectionFlow/screens/ErrorScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/ErrorScreen.js +0 -13
- package/dist/WalletConnectionFlow/screens/EthToSolAuthScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/EthToSolAuthScreen.js +0 -47
- package/dist/WalletConnectionFlow/screens/EvmWalletAuthScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/EvmWalletAuthScreen.js +0 -47
- package/dist/WalletConnectionFlow/screens/FinalSuccessScreen.d.ts +0 -5
- package/dist/WalletConnectionFlow/screens/FinalSuccessScreen.js +0 -18
- package/dist/WalletConnectionFlow/screens/NordAuthScreen.d.ts +0 -7
- package/dist/WalletConnectionFlow/screens/NordAuthScreen.js +0 -14
- package/dist/WalletConnectionFlow/screens/SigningScreen.d.ts +0 -6
- package/dist/WalletConnectionFlow/screens/SigningScreen.js +0 -6
- package/dist/WalletConnectionFlow/screens/index.d.ts +0 -10
- package/dist/WalletConnectionFlow/screens/index.js +0 -10
- package/dist/WalletConnectionFlow/types.d.ts +0 -105
- package/dist/WalletConnectionFlow/types.js +0 -34
- package/dist/WalletConnectionFlow/utils/persistence.d.ts +0 -24
- package/dist/WalletConnectionFlow/utils/persistence.js +0 -83
- package/dist/components/LazyLoadWrapper.d.ts +0 -8
- package/dist/components/LazyLoadWrapper.js +0 -17
- package/dist/components/WalletDeposit/AnimatedButton.d.ts +0 -17
- package/dist/components/WalletDeposit/AnimatedButton.js +0 -29
- package/dist/components/WalletDeposit/components/ChainButton.d.ts +0 -7
- package/dist/components/WalletDeposit/components/ChainButton.js +0 -5
- package/dist/components/WalletDeposit/components/LoadingSquares.d.ts +0 -1
- package/dist/components/WalletDeposit/components/LoadingSquares.js +0 -5
- package/dist/components/WalletDeposit/components/TransactionTable.d.ts +0 -13
- package/dist/components/WalletDeposit/components/TransactionTable.js +0 -58
- package/dist/components/WalletDeposit/components/WaitingMessage.d.ts +0 -6
- package/dist/components/WalletDeposit/components/WaitingMessage.js +0 -6
- package/dist/components/WalletDeposit/constants.d.ts +0 -15
- package/dist/components/WalletDeposit/constants.js +0 -32
- package/dist/components/WalletDeposit/hooks.d.ts +0 -9
- package/dist/components/WalletDeposit/hooks.js +0 -185
- package/dist/components/WalletDeposit/index.d.ts +0 -1
- package/dist/components/WalletDeposit/index.js +0 -136
- package/dist/components/WalletDeposit/screens/AmountInputScreen.d.ts +0 -12
- package/dist/components/WalletDeposit/screens/AmountInputScreen.js +0 -18
- package/dist/components/WalletDeposit/screens/AppsTableScreen.d.ts +0 -8
- package/dist/components/WalletDeposit/screens/AppsTableScreen.js +0 -28
- package/dist/components/WalletDeposit/screens/ChainSelectionScreen.d.ts +0 -5
- package/dist/components/WalletDeposit/screens/ChainSelectionScreen.js +0 -8
- package/dist/components/WalletDeposit/screens/InitialScreen.d.ts +0 -9
- package/dist/components/WalletDeposit/screens/InitialScreen.js +0 -18
- package/dist/components/WalletDeposit/screens/SigningScreen.d.ts +0 -6
- package/dist/components/WalletDeposit/screens/SigningScreen.js +0 -6
- package/dist/components/WalletDeposit/screens/SuccessScreen.d.ts +0 -12
- package/dist/components/WalletDeposit/screens/SuccessScreen.js +0 -7
- package/dist/components/WalletDeposit/types.d.ts +0 -48
- package/dist/components/WalletDeposit/types.js +0 -1
- package/dist/config/dynamic.d.ts +0 -20
- package/dist/config/dynamic.js +0 -47
- package/dist/hooks/useSolanaSession.d.ts +0 -17
- package/dist/hooks/useSolanaSession.js +0 -180
- package/dist/utils/lazyLoad.d.ts +0 -3
- package/dist/utils/lazyLoad.js +0 -9
- package/dist/utils/react-shim.d.ts +0 -2
- package/dist/utils/react-shim.js +0 -6
- package/dist/utils/solana-session.d.ts +0 -84
- package/dist/utils/solana-session.js +0 -230
|
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
12
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
13
13
|
import { FlowState, initialFlowContext } from '../types';
|
|
14
14
|
import { STATE_TRANSITIONS } from '../constants';
|
|
15
15
|
import { clearStoredState, loadStateFromLocalStorage, saveStateToLocalStorage, } from '../utils/persistence';
|
|
@@ -20,17 +20,20 @@ import { logger } from '../../../utils/logger';
|
|
|
20
20
|
* @returns Flow state management methods and properties
|
|
21
21
|
*/
|
|
22
22
|
export var useFlowState = function (options) {
|
|
23
|
-
var
|
|
23
|
+
var onStateChange = options.onStateChange, onError = options.onError;
|
|
24
24
|
// Flow state
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
var
|
|
29
|
-
var
|
|
25
|
+
var _a = useState(FlowState.IDLE), state = _a[0], setState = _a[1];
|
|
26
|
+
var _b = useState(null), prevState = _b[0], setPrevState = _b[1];
|
|
27
|
+
var _c = useState(initialFlowContext), context = _c[0], setContext = _c[1];
|
|
28
|
+
var _d = useState(false), isTransitioning = _d[0], setIsTransitioning = _d[1];
|
|
29
|
+
var _e = useState(false), isRecoveryAvailable = _e[0], setIsRecoveryAvailable = _e[1];
|
|
30
|
+
// Use refs to track previous values
|
|
31
|
+
var prevStateRef = useRef(FlowState.IDLE);
|
|
32
|
+
var prevContextRef = useRef(initialFlowContext);
|
|
30
33
|
/**
|
|
31
34
|
* Check if a transition is allowed based on current state and context
|
|
32
35
|
*/
|
|
33
|
-
var canTransition = useCallback(function (targetState,
|
|
36
|
+
var canTransition = useCallback(function (targetState, contextData) {
|
|
34
37
|
return STATE_TRANSITIONS.some(function (transition) {
|
|
35
38
|
var fromMatches = Array.isArray(transition.from)
|
|
36
39
|
? transition.from.includes(state)
|
|
@@ -39,16 +42,20 @@ export var useFlowState = function (options) {
|
|
|
39
42
|
return false;
|
|
40
43
|
}
|
|
41
44
|
if (transition.condition) {
|
|
42
|
-
return transition.condition(
|
|
45
|
+
return transition.condition(contextData);
|
|
43
46
|
}
|
|
44
47
|
return true;
|
|
45
48
|
});
|
|
46
|
-
}, [state
|
|
49
|
+
}, [state]);
|
|
47
50
|
/**
|
|
48
51
|
* Transition to a new state if allowed
|
|
49
52
|
*/
|
|
50
53
|
var transition = useCallback(function (targetState, contextUpdates) {
|
|
51
54
|
if (contextUpdates === void 0) { contextUpdates = {}; }
|
|
55
|
+
// Skip if we're already in the target state and no context updates
|
|
56
|
+
if (targetState === state && Object.keys(contextUpdates).length === 0) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
52
59
|
if (!canTransition(targetState, __assign(__assign({}, context), contextUpdates))) {
|
|
53
60
|
logger.warn("Transition from ".concat(state, " to ").concat(targetState, " is not allowed"));
|
|
54
61
|
return false;
|
|
@@ -63,23 +70,26 @@ export var useFlowState = function (options) {
|
|
|
63
70
|
});
|
|
64
71
|
// Then update state
|
|
65
72
|
setPrevState(state);
|
|
66
|
-
|
|
73
|
+
prevStateRef.current = state;
|
|
74
|
+
logger.debug("Transitioning from ".concat(state, " to ").concat(targetState));
|
|
67
75
|
setState(targetState);
|
|
68
76
|
if (onStateChange) {
|
|
69
77
|
onStateChange(targetState, state);
|
|
70
78
|
}
|
|
71
79
|
setIsTransitioning(false);
|
|
72
80
|
return true;
|
|
73
|
-
}, [canTransition, state, onStateChange]);
|
|
81
|
+
}, [canTransition, state, context, onStateChange]);
|
|
74
82
|
/**
|
|
75
83
|
* Reset flow to initial state
|
|
76
84
|
*/
|
|
77
85
|
var reset = useCallback(function () {
|
|
78
86
|
clearStoredState();
|
|
79
87
|
setContext(initialFlowContext);
|
|
88
|
+
prevContextRef.current = initialFlowContext;
|
|
80
89
|
setPrevState(null);
|
|
81
|
-
logger.debug('
|
|
90
|
+
logger.debug('Resetting flow state to IDLE');
|
|
82
91
|
setState(FlowState.IDLE);
|
|
92
|
+
prevStateRef.current = FlowState.IDLE;
|
|
83
93
|
if (onStateChange) {
|
|
84
94
|
onStateChange(FlowState.IDLE, state);
|
|
85
95
|
}
|
|
@@ -103,8 +113,10 @@ export var useFlowState = function (options) {
|
|
|
103
113
|
return false;
|
|
104
114
|
}
|
|
105
115
|
setContext(savedState.context);
|
|
116
|
+
prevContextRef.current = savedState.context;
|
|
106
117
|
setPrevState(state);
|
|
107
|
-
|
|
118
|
+
prevStateRef.current = state;
|
|
119
|
+
logger.debug("Recovering state: ".concat(savedState.state));
|
|
108
120
|
setState(savedState.state);
|
|
109
121
|
if (onStateChange) {
|
|
110
122
|
onStateChange(savedState.state, state);
|
|
@@ -115,8 +127,25 @@ export var useFlowState = function (options) {
|
|
|
115
127
|
* Update context without state transition
|
|
116
128
|
*/
|
|
117
129
|
var updateContext = useCallback(function (updates) {
|
|
130
|
+
// Skip if no actual updates
|
|
131
|
+
if (Object.keys(updates).length === 0) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
118
134
|
setContext(function (prevContext) {
|
|
135
|
+
// Check if any values are actually changing
|
|
136
|
+
var hasChanges = false;
|
|
137
|
+
// Type-safe way to check for changes
|
|
138
|
+
Object.keys(updates).forEach(function (key) {
|
|
139
|
+
if (updates[key] !== prevContext[key]) {
|
|
140
|
+
hasChanges = true;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
// If nothing is changing, return the previous context
|
|
144
|
+
if (!hasChanges) {
|
|
145
|
+
return prevContext;
|
|
146
|
+
}
|
|
119
147
|
var newContext = __assign(__assign({}, prevContext), updates);
|
|
148
|
+
prevContextRef.current = newContext;
|
|
120
149
|
saveStateToLocalStorage(state, newContext);
|
|
121
150
|
return newContext;
|
|
122
151
|
});
|
|
@@ -133,14 +162,6 @@ export var useFlowState = function (options) {
|
|
|
133
162
|
},
|
|
134
163
|
});
|
|
135
164
|
}, [state, context, updateContext]);
|
|
136
|
-
// Check for recoverable state on mount
|
|
137
|
-
useEffect(function () {
|
|
138
|
-
var hasRecoverable = loadStateFromLocalStorage() !== null;
|
|
139
|
-
setIsRecoveryAvailable(hasRecoverable);
|
|
140
|
-
if (autoRecover && hasRecoverable) {
|
|
141
|
-
recover();
|
|
142
|
-
}
|
|
143
|
-
}, [autoRecover, recover]);
|
|
144
165
|
// Register unload handler to record interruptions
|
|
145
166
|
useEffect(function () {
|
|
146
167
|
var handleBeforeUnload = function () {
|
|
@@ -165,3 +186,4 @@ export var useFlowState = function (options) {
|
|
|
165
186
|
handleError: handleError,
|
|
166
187
|
};
|
|
167
188
|
};
|
|
189
|
+
//# sourceMappingURL=useFlowState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFlowState.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useFlowState.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { FlowContext, FlowState, initialFlowContext } from '../types';\nimport { STATE_TRANSITIONS } from '../constants';\nimport {\n clearStoredState,\n loadStateFromLocalStorage,\n saveStateToLocalStorage,\n} from '../utils/persistence';\nimport { logger } from '../../../utils/logger';\n\n/**\n * Custom hook for managing the wallet connection flow state machine\n * @param options Configuration options\n * @returns Flow state management methods and properties\n */\nexport const useFlowState = (options: {\n /**\n * Whether to automatically recover saved state on initialization\n */\n autoRecover?: boolean;\n /**\n * Callback when state changes\n */\n onStateChange?: (newState: FlowState, prevState: FlowState | null) => void;\n /**\n * Callback when an error occurs\n */\n onError?: (error: Error) => void;\n}) => {\n const { onStateChange, onError } = options;\n\n // Flow state\n const [state, setState] = useState<FlowState>(FlowState.IDLE);\n const [prevState, setPrevState] = useState<FlowState | null>(null);\n const [context, setContext] = useState<FlowContext>(initialFlowContext);\n const [isTransitioning, setIsTransitioning] = useState(false);\n const [isRecoveryAvailable, setIsRecoveryAvailable] = useState(false);\n \n // Use refs to track previous values\n const prevStateRef = useRef<FlowState>(FlowState.IDLE);\n const prevContextRef = useRef<FlowContext>(initialFlowContext);\n\n /**\n * Check if a transition is allowed based on current state and context\n */\n const canTransition = useCallback(\n (targetState: FlowState, contextData: FlowContext): boolean => {\n return STATE_TRANSITIONS.some((transition) => {\n const fromMatches = Array.isArray(transition.from)\n ? transition.from.includes(state)\n : transition.from === state;\n\n if (!fromMatches || transition.to !== targetState) {\n return false;\n }\n\n if (transition.condition) {\n return transition.condition(contextData);\n }\n\n return true;\n });\n },\n [state]\n );\n\n /**\n * Transition to a new state if allowed\n */\n const transition = useCallback(\n (\n targetState: FlowState,\n contextUpdates: Partial<FlowContext> = {}\n ): boolean => {\n // Skip if we're already in the target state and no context updates\n if (targetState === state && Object.keys(contextUpdates).length === 0) {\n return true;\n }\n \n if (!canTransition(targetState, { ...context, ...contextUpdates })) {\n logger.warn(\n `Transition from ${state} to ${targetState} is not allowed`\n );\n return false;\n }\n\n setIsTransitioning(true);\n\n // Update context first\n setContext((prevContext) => {\n const newContext = { ...prevContext, ...contextUpdates };\n\n // Save new state and context to localStorage for recovery\n saveStateToLocalStorage(targetState, newContext);\n\n return newContext;\n });\n\n // Then update state\n setPrevState(state);\n prevStateRef.current = state;\n logger.debug(`Transitioning from ${state} to ${targetState}`);\n setState(targetState);\n\n if (onStateChange) {\n onStateChange(targetState, state);\n }\n\n setIsTransitioning(false);\n return true;\n },\n [canTransition, state, context, onStateChange]\n );\n\n /**\n * Reset flow to initial state\n */\n const reset = useCallback(() => {\n clearStoredState();\n setContext(initialFlowContext);\n prevContextRef.current = initialFlowContext;\n setPrevState(null);\n logger.debug('Resetting flow state to IDLE');\n setState(FlowState.IDLE);\n prevStateRef.current = FlowState.IDLE;\n\n if (onStateChange) {\n onStateChange(FlowState.IDLE, state);\n }\n }, [state, onStateChange]);\n\n /**\n * Handle an error by transitioning to error state\n */\n const handleError = useCallback(\n (error: Error) => {\n if (onError) {\n onError(error);\n }\n\n transition(FlowState.ERROR, { error });\n },\n [transition, onError]\n );\n\n /**\n * Recover state from localStorage\n */\n const recover = useCallback((): boolean => {\n const savedState = loadStateFromLocalStorage();\n\n if (!savedState) {\n setIsRecoveryAvailable(false);\n return false;\n }\n\n setContext(savedState.context);\n prevContextRef.current = savedState.context;\n setPrevState(state);\n prevStateRef.current = state;\n logger.debug(`Recovering state: ${savedState.state}`);\n setState(savedState.state);\n\n if (onStateChange) {\n onStateChange(savedState.state, state);\n }\n\n return true;\n }, [state, onStateChange]);\n\n /**\n * Update context without state transition\n */\n const updateContext = useCallback(\n (updates: Partial<FlowContext>) => {\n // Skip if no actual updates\n if (Object.keys(updates).length === 0) {\n return;\n }\n \n setContext((prevContext) => {\n // Check if any values are actually changing\n let hasChanges = false;\n \n // Type-safe way to check for changes\n (Object.keys(updates) as Array<keyof Partial<FlowContext>>).forEach(key => {\n if (updates[key] !== prevContext[key]) {\n hasChanges = true;\n }\n });\n \n // If nothing is changing, return the previous context\n if (!hasChanges) {\n return prevContext;\n }\n \n const newContext = { ...prevContext, ...updates };\n prevContextRef.current = newContext;\n saveStateToLocalStorage(state, newContext);\n return newContext;\n });\n },\n [state]\n );\n\n /**\n * Record an interruption in the flow (e.g., modal close, page reload)\n */\n const recordInterruption = useCallback(() => {\n updateContext({\n lastInterruption: {\n timestamp: Date.now(),\n state,\n context: { ...context },\n },\n });\n }, [state, context, updateContext]);\n\n // Register unload handler to record interruptions\n useEffect(() => {\n const handleBeforeUnload = () => {\n recordInterruption();\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n };\n }, [recordInterruption]);\n\n return {\n state,\n prevState,\n context,\n isTransitioning,\n isRecoveryAvailable,\n transition,\n updateContext,\n reset,\n recover,\n recordInterruption,\n handleError,\n };\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Hook for handling interruptions during the flow
|
|
4
4
|
*
|
|
@@ -6,12 +6,18 @@ import { useCallback, useEffect, useState } from 'react';
|
|
|
6
6
|
* @returns Interruption handling methods and state
|
|
7
7
|
*/
|
|
8
8
|
export var useInterruptHandler = function (options) {
|
|
9
|
-
var
|
|
9
|
+
var recordInterruption = options.recordInterruption, onClose = options.onClose;
|
|
10
|
+
// Use ref to track previous state
|
|
11
|
+
var prevStateRef = useRef(options.state);
|
|
10
12
|
var _a = useState(false), isClosing = _a[0], setIsClosing = _a[1];
|
|
11
13
|
/**
|
|
12
14
|
* Handle modal close request
|
|
13
15
|
*/
|
|
14
16
|
var handleCloseRequest = useCallback(function () {
|
|
17
|
+
// Skip if already closing
|
|
18
|
+
if (isClosing) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
15
21
|
// Always proceed with closing
|
|
16
22
|
setIsClosing(true);
|
|
17
23
|
recordInterruption();
|
|
@@ -22,12 +28,12 @@ export var useInterruptHandler = function (options) {
|
|
|
22
28
|
}
|
|
23
29
|
}, 300);
|
|
24
30
|
return true;
|
|
25
|
-
}, [recordInterruption, onClose]);
|
|
31
|
+
}, [recordInterruption, onClose, isClosing]);
|
|
26
32
|
/**
|
|
27
33
|
* Handle beforeunload event to record interruptions
|
|
28
34
|
*/
|
|
29
35
|
useEffect(function () {
|
|
30
|
-
var handleBeforeUnload = function (
|
|
36
|
+
var handleBeforeUnload = function () {
|
|
31
37
|
// Record the interruption
|
|
32
38
|
recordInterruption();
|
|
33
39
|
};
|
|
@@ -36,21 +42,18 @@ export var useInterruptHandler = function (options) {
|
|
|
36
42
|
window.removeEventListener('beforeunload', handleBeforeUnload);
|
|
37
43
|
};
|
|
38
44
|
}, [recordInterruption]);
|
|
39
|
-
|
|
40
|
-
* Handle focus events to detect when user returns to the page
|
|
41
|
-
*/
|
|
45
|
+
// Track state changes
|
|
42
46
|
useEffect(function () {
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
};
|
|
51
|
-
}, []);
|
|
47
|
+
var currentState = options.state;
|
|
48
|
+
var prevState = prevStateRef.current;
|
|
49
|
+
// Update ref if state has changed
|
|
50
|
+
if (currentState !== prevState) {
|
|
51
|
+
prevStateRef.current = currentState;
|
|
52
|
+
}
|
|
53
|
+
}, [options.state]);
|
|
52
54
|
return {
|
|
53
55
|
isClosing: isClosing,
|
|
54
56
|
handleCloseRequest: handleCloseRequest,
|
|
55
57
|
};
|
|
56
58
|
};
|
|
59
|
+
//# sourceMappingURL=useInterruptHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInterruptHandler.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useInterruptHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjE;;;;;GAKG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,OAanC;IACS,IAAA,kBAAkB,GAAc,OAAO,mBAArB,EAAE,OAAO,GAAK,OAAO,QAAZ,CAAa;IAEhD,kCAAkC;IAClC,IAAM,YAAY,GAAG,MAAM,CAAY,OAAO,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAA,KAA4B,QAAQ,CAAC,KAAK,CAAC,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAC;IAElD;;OAEG;IACH,IAAM,kBAAkB,GAAG,WAAW,CAAC;QACrC,0BAA0B;QAC1B,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8BAA8B;QAC9B,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,kBAAkB,EAAE,CAAC;QAErB,wCAAwC;QACxC,UAAU,CAAC;YACT,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7C;;OAEG;IACH,SAAS,CAAC;QACR,IAAM,kBAAkB,GAAG;YACzB,0BAA0B;YAC1B,kBAAkB,EAAE,CAAC;QACvB,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAE5D,OAAO;YACL,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzB,sBAAsB;IACtB,SAAS,CAAC;QACR,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QACnC,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,kCAAkC;QAClC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpB,OAAO;QACL,SAAS,WAAA;QACT,kBAAkB,oBAAA;KACnB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { FlowState } from '../types';\n\n/**\n * Hook for handling interruptions during the flow\n *\n * @param options Configuration options\n * @returns Interruption handling methods and state\n */\nexport const useInterruptHandler = (options: {\n /**\n * Flow state\n */\n state: FlowState;\n /**\n * Record an interruption\n */\n recordInterruption: () => void;\n /**\n * Callback to handle modal close\n */\n onClose?: () => void;\n}) => {\n const { recordInterruption, onClose } = options;\n \n // Use ref to track previous state\n const prevStateRef = useRef<FlowState>(options.state);\n\n const [isClosing, setIsClosing] = useState(false);\n\n /**\n * Handle modal close request\n */\n const handleCloseRequest = useCallback(() => {\n // Skip if already closing\n if (isClosing) {\n return true;\n }\n \n // Always proceed with closing\n setIsClosing(true);\n recordInterruption();\n\n // Delay actual close to allow animation\n setTimeout(() => {\n if (onClose) {\n onClose();\n }\n }, 300);\n\n return true;\n }, [recordInterruption, onClose, isClosing]);\n\n /**\n * Handle beforeunload event to record interruptions\n */\n useEffect(() => {\n const handleBeforeUnload = () => {\n // Record the interruption\n recordInterruption();\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n };\n }, [recordInterruption]);\n\n // Track state changes\n useEffect(() => {\n const currentState = options.state;\n const prevState = prevStateRef.current;\n \n // Update ref if state has changed\n if (currentState !== prevState) {\n prevStateRef.current = currentState;\n }\n }, [options.state]);\n\n return {\n isClosing,\n handleCloseRequest,\n };\n};\n"]}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { NordUser } from '@n1xyz/nord-ts';
|
|
2
1
|
/**
|
|
3
2
|
* Hook to access the Nord instance and create a NordUser if needed
|
|
4
3
|
*/
|
|
5
4
|
export declare const useNordInstance: () => {
|
|
6
|
-
nord: import("@n1xyz/nord-ts").Nord | undefined;
|
|
7
|
-
createNordUser: () => Promise<NordUser | null>;
|
|
8
5
|
nordUser: any;
|
|
9
|
-
createTransactionSignFunction: () => (transaction: any) => Promise<any>;
|
|
10
6
|
};
|
|
@@ -36,28 +36,23 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
};
|
|
37
37
|
import { NordUser } from '@n1xyz/nord-ts';
|
|
38
38
|
import { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';
|
|
39
|
-
import { PublicKey } from '@solana/web3.js';
|
|
40
|
-
import { useEffect } from 'react';
|
|
39
|
+
import { PublicKey, Transaction } from '@solana/web3.js';
|
|
40
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
41
41
|
import { WalletError, WalletErrorCode } from '../../../errors/types';
|
|
42
42
|
import { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage, } from '../../../Logic/utils';
|
|
43
43
|
import { useN1WalletContext, useN1WalletInternalContext, } from '../../../Provider/hooks';
|
|
44
44
|
import { logger } from '../../../utils/logger';
|
|
45
|
-
// Utility function to convert Uint8Array to base64 string
|
|
46
|
-
function arrayBufferToBase64(buffer) {
|
|
47
|
-
var binary = '';
|
|
48
|
-
for (var i = 0; i < buffer.length; i++) {
|
|
49
|
-
binary += String.fromCharCode(buffer[i]);
|
|
50
|
-
}
|
|
51
|
-
return btoa(binary);
|
|
52
|
-
}
|
|
53
45
|
/**
|
|
54
46
|
* Hook to access the Nord instance and create a NordUser if needed
|
|
55
47
|
*/
|
|
56
48
|
export var useNordInstance = function () {
|
|
57
49
|
var _a = useN1WalletContext(), nord = _a.nord, address = _a.address, signMessageWithWalletKey = _a.signMessageWithWalletKey, signMessageWithSessionKey = _a.signMessageWithSessionKey, signTransactionWithWalletKey = _a.signTransactionWithWalletKey, nordUser = _a.nordUser, sessionPubKey = _a.sessionPubKey;
|
|
58
50
|
var _b = useN1WalletInternalContext(), setSessionPubKey = _b.setSessionPubKey, setSignMessageWithSessionKey = _b.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _b.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _b.setSignTransactionWithWalletKey, dynamicWallet = _b.dynamicWallet, setNordUser = _b.setNordUser;
|
|
51
|
+
// Use refs to track previous values to prevent unnecessary re-renders
|
|
52
|
+
var prevDynamicWalletRef = useRef(dynamicWallet);
|
|
53
|
+
var prevAddressRef = useRef(address);
|
|
59
54
|
// Create a wallet signing function if needed
|
|
60
|
-
var createWalletSignFunction = function () {
|
|
55
|
+
var createWalletSignFunction = useCallback(function () {
|
|
61
56
|
if (!dynamicWallet) {
|
|
62
57
|
return null;
|
|
63
58
|
}
|
|
@@ -88,11 +83,14 @@ export var useNordInstance = function () {
|
|
|
88
83
|
// Set the wallet sign function in context
|
|
89
84
|
setSignMessageWithWalletKey(function () { return signWithWallet; });
|
|
90
85
|
return signWithWallet;
|
|
91
|
-
};
|
|
86
|
+
}, [dynamicWallet, setSignMessageWithWalletKey]);
|
|
92
87
|
// Create a wallet transaction signing function
|
|
93
|
-
var createTransactionSignFunction = function () {
|
|
88
|
+
var createTransactionSignFunction = useCallback(function () {
|
|
89
|
+
if (!dynamicWallet) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
94
92
|
var signTransactionWithWallet = function (transaction) { return __awaiter(void 0, void 0, void 0, function () {
|
|
95
|
-
var signedTransaction, error_2;
|
|
93
|
+
var signedTransaction, serializedTx, error_2;
|
|
96
94
|
return __generator(this, function (_a) {
|
|
97
95
|
switch (_a.label) {
|
|
98
96
|
case 0:
|
|
@@ -103,7 +101,10 @@ export var useNordInstance = function () {
|
|
|
103
101
|
case 2:
|
|
104
102
|
signedTransaction = _a.sent();
|
|
105
103
|
logger.debug('Solana transaction signature received');
|
|
106
|
-
|
|
104
|
+
serializedTx = signedTransaction.serialize();
|
|
105
|
+
// Create a new transaction from the serialized data
|
|
106
|
+
// This will have a proper signature property that can be accessed
|
|
107
|
+
return [2 /*return*/, Transaction.from(serializedTx)];
|
|
107
108
|
case 3: throw new WalletError(WalletErrorCode.USER_REJECTED, 'Unsupported chain', { originalError: new Error('Unsupported chain') });
|
|
108
109
|
case 4:
|
|
109
110
|
error_2 = _a.sent();
|
|
@@ -116,9 +117,9 @@ export var useNordInstance = function () {
|
|
|
116
117
|
// Set the transaction sign function in context
|
|
117
118
|
setSignTransactionWithWalletKey(function () { return signTransactionWithWallet; });
|
|
118
119
|
return signTransactionWithWallet;
|
|
119
|
-
};
|
|
120
|
+
}, [dynamicWallet, setSignTransactionWithWalletKey]);
|
|
120
121
|
// Create a session if we have the necessary dependencies but no session sign function
|
|
121
|
-
var createSession = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
122
|
+
var createSession = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
122
123
|
var sessionKeyPair_1, storedKeys, tempKeyPair, error_3, signFn_1, error_4;
|
|
123
124
|
return __generator(this, function (_a) {
|
|
124
125
|
switch (_a.label) {
|
|
@@ -186,9 +187,9 @@ export var useNordInstance = function () {
|
|
|
186
187
|
case 8: return [2 /*return*/];
|
|
187
188
|
}
|
|
188
189
|
});
|
|
189
|
-
}); };
|
|
190
|
+
}); }, [address, dynamicWallet, setSessionPubKey, setSignMessageWithSessionKey]);
|
|
190
191
|
// Create a NordUser instance if needed
|
|
191
|
-
var createNordUser = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
192
|
+
var createNordUser = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
192
193
|
var walletSignFn, sessionSignFn, createdSignFn, sessionId, sessionKeyData, sessionIdKey, storedSessionId, user, _1, error_6;
|
|
193
194
|
return __generator(this, function (_a) {
|
|
194
195
|
switch (_a.label) {
|
|
@@ -242,6 +243,9 @@ export var useNordInstance = function () {
|
|
|
242
243
|
console.error('Error retrieving sessionId from localStorage:', error);
|
|
243
244
|
}
|
|
244
245
|
}
|
|
246
|
+
if (!nord || !address || !sessionPubKey) {
|
|
247
|
+
return [2 /*return*/, null];
|
|
248
|
+
}
|
|
245
249
|
user = new NordUser({
|
|
246
250
|
nord: nord,
|
|
247
251
|
address: address,
|
|
@@ -274,17 +278,53 @@ export var useNordInstance = function () {
|
|
|
274
278
|
case 8: return [2 /*return*/];
|
|
275
279
|
}
|
|
276
280
|
});
|
|
277
|
-
}); }
|
|
281
|
+
}); }, [
|
|
282
|
+
nord,
|
|
283
|
+
address,
|
|
284
|
+
dynamicWallet,
|
|
285
|
+
signMessageWithWalletKey,
|
|
286
|
+
signMessageWithSessionKey,
|
|
287
|
+
signTransactionWithWalletKey,
|
|
288
|
+
sessionPubKey,
|
|
289
|
+
createWalletSignFunction,
|
|
290
|
+
createTransactionSignFunction,
|
|
291
|
+
createSession,
|
|
292
|
+
setNordUser
|
|
293
|
+
]);
|
|
294
|
+
// Initialize wallet and session functions only when dependencies change
|
|
278
295
|
useEffect(function () {
|
|
279
|
-
|
|
296
|
+
var currentDynamicWallet = dynamicWallet;
|
|
297
|
+
var currentAddress = address;
|
|
298
|
+
var prevDynamicWallet = prevDynamicWalletRef.current;
|
|
299
|
+
var prevAddress = prevAddressRef.current;
|
|
300
|
+
// Only run if dynamicWallet or address has actually changed
|
|
301
|
+
if ((currentDynamicWallet !== prevDynamicWallet ||
|
|
302
|
+
currentAddress !== prevAddress) &&
|
|
303
|
+
currentDynamicWallet &&
|
|
304
|
+
nord &&
|
|
305
|
+
currentAddress) {
|
|
306
|
+
logger.debug('Wallet or address changed, initializing functions');
|
|
280
307
|
if (signMessageWithSessionKey == null)
|
|
281
308
|
createSession();
|
|
282
309
|
if (signMessageWithWalletKey == null)
|
|
283
310
|
createWalletSignFunction();
|
|
284
311
|
if (signTransactionWithWalletKey == null)
|
|
285
312
|
createTransactionSignFunction();
|
|
313
|
+
// Update refs
|
|
314
|
+
prevDynamicWalletRef.current = currentDynamicWallet;
|
|
315
|
+
prevAddressRef.current = currentAddress;
|
|
286
316
|
}
|
|
287
|
-
}, [
|
|
317
|
+
}, [
|
|
318
|
+
dynamicWallet,
|
|
319
|
+
address,
|
|
320
|
+
nord,
|
|
321
|
+
signMessageWithSessionKey,
|
|
322
|
+
signMessageWithWalletKey,
|
|
323
|
+
signTransactionWithWalletKey,
|
|
324
|
+
createSession,
|
|
325
|
+
createWalletSignFunction,
|
|
326
|
+
createTransactionSignFunction
|
|
327
|
+
]);
|
|
288
328
|
// Initialize NordUser when dependencies change, but only if we don't already have one
|
|
289
329
|
useEffect(function () {
|
|
290
330
|
var initNordUser = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -309,11 +349,11 @@ export var useNordInstance = function () {
|
|
|
309
349
|
signMessageWithWalletKey,
|
|
310
350
|
signMessageWithSessionKey,
|
|
311
351
|
signTransactionWithWalletKey,
|
|
352
|
+
nordUser,
|
|
353
|
+
createNordUser
|
|
312
354
|
]);
|
|
313
355
|
return {
|
|
314
|
-
nord: nord,
|
|
315
|
-
createNordUser: createNordUser,
|
|
316
356
|
nordUser: nordUser,
|
|
317
|
-
createTransactionSignFunction: createTransactionSignFunction,
|
|
318
357
|
};
|
|
319
358
|
};
|
|
359
|
+
//# sourceMappingURL=useNordInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNordInstance.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useNordInstance.ts"],"names":[],"mappings":"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","sourcesContent":["import { NordUser } from '@n1xyz/nord-ts';\nimport { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { WalletError, WalletErrorCode } from '../../../errors/types';\nimport {\n getSessionKeysFromLocalStorage,\n storeSessionKeysInLocalStorage,\n} from '../../../Logic/utils';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { logger } from '../../../utils/logger';\nimport { sign } from 'crypto';\n\n\n/**\n * Hook to access the Nord instance and create a NordUser if needed\n */\nexport const useNordInstance = () => {\n const {\n nord,\n address,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n nordUser,\n sessionPubKey,\n } = useN1WalletContext();\n const {\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n dynamicWallet,\n setNordUser,\n } = useN1WalletInternalContext();\n\n // Use refs to track previous values to prevent unnecessary re-renders\n const prevDynamicWalletRef = useRef(dynamicWallet);\n const prevAddressRef = useRef(address);\n\n // Create a wallet signing function if needed\n const createWalletSignFunction = useCallback(() => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signWithWallet = async (msg: Uint8Array): Promise<Uint8Array> => {\n try {\n const hexMsg = Buffer.from(msg).toString('hex');\n const signature = await dynamicWallet.signMessage(hexMsg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n } catch (error) {\n console.error('Error signing with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\n\n // Set the wallet sign function in context\n setSignMessageWithWalletKey(() => signWithWallet);\n return signWithWallet;\n }, [dynamicWallet, setSignMessageWithWalletKey]);\n\n // Create a wallet transaction signing function\n const createTransactionSignFunction = useCallback(() => {\n if (!dynamicWallet) {\n return null;\n }\n \n const signTransactionWithWallet = async (\n transaction: any\n ): Promise<any> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signedTransaction = await (\n await dynamicWallet.getSigner()\n ).signTransaction(transaction);\n logger.debug('Solana transaction signature received');\n \n // Serialize the transaction and create a new one from the serialized data\n // This avoids the need to modify the signature property directly\n const serializedTx = signedTransaction.serialize();\n \n // Create a new transaction from the serialized data\n // This will have a proper signature property that can be accessed\n return Transaction.from(serializedTx);\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing transaction with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign transaction with wallet',\n { originalError: error }\n );\n }\n };\n\n // Set the transaction sign function in context\n setSignTransactionWithWalletKey(() => signTransactionWithWallet);\n return signTransactionWithWallet;\n }, [dynamicWallet, setSignTransactionWithWalletKey]);\n\n // Create a session if we have the necessary dependencies but no session sign function\n const createSession = useCallback(async () => {\n try {\n // Try to load existing session keys from localStorage\n let sessionKeyPair = null;\n if (address) {\n const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n // Reconstruct the key pair from the stored private key\n // We need to derive the public key from the private key\n try {\n // Generate a new key pair to get the proper structure\n const tempKeyPair = await generateSessionKeyPair();\n // Replace the private key with our stored one\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n // For Ed25519, the public key is the second half of the private key\n publicKey: tempKeyPair.publicKey,\n };\n } catch (error) {\n console.error(\n 'Error reconstructing key pair from stored keys:',\n error\n );\n sessionKeyPair = null;\n }\n }\n }\n\n // If we couldn't load keys from localStorage, generate new ones\n if (!sessionKeyPair) {\n sessionKeyPair = await generateSessionKeyPair();\n }\n\n // Create session signing function\n const signFn = async (message: any): Promise<any> => {\n try {\n return await signEd25519(message, sessionKeyPair.privateKey);\n } catch (error) {\n console.error('Error signing with session key:', error);\n throw error;\n }\n };\n\n // Store session keys\n storeSessionKeysInLocalStorage({\n privKey: sessionKeyPair.privateKey,\n walletPublicKey: address,\n chainName: dynamicWallet?.chain || 'ETH', // Default to ETH if we don't have chain info\n });\n\n // Set session public key and sign function in context\n setSessionPubKey(sessionKeyPair.publicKey);\n setSignMessageWithSessionKey(() => signFn);\n return signFn;\n } catch (error) {\n console.error('Error creating session:', error);\n return null;\n }\n }, [address, dynamicWallet, setSessionPubKey, setSignMessageWithSessionKey]);\n\n // Create a NordUser instance if needed\n const createNordUser = useCallback(async () => {\n try {\n // If we don't have a wallet sign function, create one\n let walletSignFn = signMessageWithWalletKey;\n if (!walletSignFn && dynamicWallet) {\n walletSignFn = createWalletSignFunction();\n\n if (!walletSignFn) {\n console.error('Failed to create wallet sign function');\n return null;\n }\n }\n\n if (!walletSignFn) {\n console.error(\n 'Cannot create NordUser, no wallet sign function available'\n );\n return null;\n }\n\n // If we don't have a transaction sign function, create one\n if (!signTransactionWithWalletKey && dynamicWallet) {\n createTransactionSignFunction();\n }\n\n // If we don't have a session sign function, create one\n let sessionSignFn = signMessageWithSessionKey;\n if (!sessionSignFn) {\n const createdSignFn = await createSession();\n\n if (!createdSignFn) {\n console.error('Failed to create session sign function');\n return null;\n }\n\n sessionSignFn = createdSignFn;\n }\n\n // Check if there's a sessionId stored for the session public key\n let sessionId = undefined;\n if (address) {\n try {\n // Get the session key from localStorage\n const sessionKeyData = getSessionKeysFromLocalStorage(address);\n if (sessionKeyData) {\n // Check if there's a sessionId stored in localStorage\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n if (storedSessionId !== null) {\n // Convert the stored sessionId to BigInt\n sessionId = BigInt(storedSessionId);\n logger.debug('Found existing sessionId in localStorage', {\n sessionId: storedSessionId,\n });\n }\n }\n } catch (error) {\n console.error('Error retrieving sessionId from localStorage:', error);\n }\n }\n\n if (!nord || !address || !sessionPubKey) {\n return null;\n }\n\n const user = new NordUser({\n nord: nord,\n address,\n walletSignFn,\n sessionSignFn,\n transactionSignFn: signTransactionWithWalletKey!,\n sessionId, // Pass the sessionId if it exists\n sessionPubKey: sessionPubKey!,\n publicKey: new PublicKey(address),\n });\n\n try {\n await user.updateAccountId();\n } catch (_) {\n // Ignore errors during account ID update\n }\n\n // Update the nordUser in the context\n setNordUser(user);\n return user;\n } catch (error) {\n console.error('Error creating NordUser:', error);\n setNordUser(null);\n return null;\n }\n }, [\n nord,\n address,\n dynamicWallet,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n createWalletSignFunction,\n createTransactionSignFunction,\n createSession,\n setNordUser\n ]);\n\n // Initialize wallet and session functions only when dependencies change\n useEffect(() => {\n const currentDynamicWallet = dynamicWallet;\n const currentAddress = address;\n const prevDynamicWallet = prevDynamicWalletRef.current;\n const prevAddress = prevAddressRef.current;\n\n // Only run if dynamicWallet or address has actually changed\n if (\n (currentDynamicWallet !== prevDynamicWallet || \n currentAddress !== prevAddress) && \n currentDynamicWallet && \n nord && \n currentAddress\n ) {\n logger.debug('Wallet or address changed, initializing functions');\n \n if (signMessageWithSessionKey == null) createSession();\n if (signMessageWithWalletKey == null) createWalletSignFunction();\n if (signTransactionWithWalletKey == null) createTransactionSignFunction();\n \n // Update refs\n prevDynamicWalletRef.current = currentDynamicWallet;\n prevAddressRef.current = currentAddress;\n }\n }, [\n dynamicWallet, \n address, \n nord, \n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n createSession,\n createWalletSignFunction,\n createTransactionSignFunction\n ]);\n\n // Initialize NordUser when dependencies change, but only if we don't already have one\n useEffect(() => {\n const initNordUser = async () => {\n if (\n signMessageWithWalletKey &&\n signMessageWithSessionKey &&\n signTransactionWithWalletKey &&\n nordUser == null\n ) {\n logger.debug('Dependencies available, initializing NordUser');\n await createNordUser();\n }\n };\n\n initNordUser();\n }, [\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n nordUser,\n createNordUser\n ]);\n\n return {\n nordUser,\n };\n};\n"]}
|