@iota/dapp-kit 0.1.2 → 0.3.0
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/CHANGELOG.md +28 -0
- package/README.md +14 -12
- package/dist/cjs/components/AccountDropdownMenu.css +4 -5
- package/dist/cjs/components/AccountDropdownMenu.css.css.map +1 -1
- package/dist/cjs/components/AccountDropdownMenu.css.map +3 -3
- package/dist/cjs/components/AccountDropdownMenu.d.ts +3 -1
- package/dist/cjs/components/AccountDropdownMenu.js +50 -106
- package/dist/cjs/components/AccountDropdownMenu.js.map +4 -4
- package/dist/cjs/components/ConnectButton.css +5 -10
- package/dist/cjs/components/ConnectButton.css.map +3 -3
- package/dist/cjs/components/ConnectButton.d.ts +5 -3
- package/dist/cjs/components/ConnectButton.js +129 -179
- package/dist/cjs/components/ConnectButton.js.map +4 -4
- package/dist/cjs/components/IotaClientProvider.d.ts +0 -1
- package/dist/cjs/components/WalletProvider.d.ts +3 -3
- package/dist/cjs/components/WalletProvider.js +115 -75
- package/dist/cjs/components/WalletProvider.js.map +2 -2
- package/dist/cjs/components/connect-modal/ConnectModal.css +5 -10
- package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/ConnectModal.css.map +3 -3
- package/dist/cjs/components/connect-modal/ConnectModal.js +15 -9
- package/dist/cjs/components/connect-modal/ConnectModal.js.map +3 -3
- package/dist/cjs/components/connect-modal/InfoSection.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/InfoSection.css.map +1 -1
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +4 -5
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +3 -3
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +2 -2
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css +78 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.css +35 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.d.ts +5 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.js +35 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.d.ts +1 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.js +145 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css +4 -5
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +3 -3
- package/dist/cjs/components/connect-modal/views/GettingStarted.js +2 -2
- package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +1 -1
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.map +1 -1
- package/dist/cjs/components/connect-modal/views/index.css +205 -0
- package/dist/cjs/components/connect-modal/views/index.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/index.d.ts +3 -0
- package/dist/cjs/components/connect-modal/views/index.js +286 -0
- package/dist/cjs/components/connect-modal/views/index.js.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.map +1 -1
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +1 -1
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +2 -2
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.map +1 -1
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js.map +1 -1
- package/dist/cjs/components/icons/ArrowRightIcon.d.ts +2 -0
- package/dist/cjs/components/icons/ArrowRightIcon.js +47 -0
- package/dist/cjs/components/icons/ArrowRightIcon.js.map +7 -0
- package/dist/cjs/components/icons/ArrowTopRightIcon.d.ts +2 -0
- package/dist/cjs/components/icons/ArrowTopRightIcon.js +47 -0
- package/dist/cjs/components/icons/ArrowTopRightIcon.js.map +7 -0
- package/dist/cjs/components/styling/InjectedThemeStyles.js +15 -8
- package/dist/cjs/components/styling/InjectedThemeStyles.js.map +2 -2
- package/dist/cjs/components/styling/StyleMarker.css.css.map +1 -1
- package/dist/cjs/components/styling/StyleMarker.css.map +1 -1
- package/dist/cjs/components/styling/StyleMarker.d.ts +0 -1
- package/dist/cjs/components/styling/StyleMarker.js +2 -2
- package/dist/cjs/components/styling/StyleMarker.js.map +3 -3
- package/dist/cjs/components/ui/Button.css +4 -5
- package/dist/cjs/components/ui/Button.css.css +4 -5
- package/dist/cjs/components/ui/Button.css.css.map +3 -3
- package/dist/cjs/components/ui/Button.css.d.ts +0 -1
- package/dist/cjs/components/ui/Button.css.js.map +1 -1
- package/dist/cjs/components/ui/Button.css.map +3 -3
- package/dist/cjs/components/ui/Button.d.ts +1 -1
- package/dist/cjs/components/ui/Button.js.map +1 -1
- package/dist/cjs/components/ui/Heading.css.css.map +1 -1
- package/dist/cjs/components/ui/Heading.css.map +1 -1
- package/dist/cjs/components/ui/Heading.d.ts +0 -1
- package/dist/cjs/components/ui/IconButton.css +1 -5
- package/dist/cjs/components/ui/IconButton.css.css +1 -5
- package/dist/cjs/components/ui/IconButton.css.css.map +3 -3
- package/dist/cjs/components/ui/IconButton.css.js.map +1 -1
- package/dist/cjs/components/ui/IconButton.css.map +3 -3
- package/dist/cjs/components/ui/IconButton.d.ts +1 -1
- package/dist/cjs/components/ui/IconButton.js.map +1 -1
- package/dist/cjs/components/ui/Text.css.css.map +1 -1
- package/dist/cjs/components/ui/Text.css.map +1 -1
- package/dist/cjs/components/ui/Text.d.ts +0 -1
- package/dist/cjs/constants/styleDataAttribute.js.map +1 -1
- package/dist/cjs/constants/walletDefaults.d.ts +3 -2
- package/dist/cjs/constants/walletDefaults.js +8 -6
- package/dist/cjs/constants/walletDefaults.js.map +2 -2
- package/dist/cjs/constants/walletMutationKeys.d.ts +3 -2
- package/dist/cjs/constants/walletMutationKeys.js +4 -3
- package/dist/cjs/constants/walletMutationKeys.js.map +2 -2
- package/dist/cjs/contexts/walletContext.d.ts +1 -2
- package/dist/cjs/hooks/useIotaClientInfiniteQuery.js.map +2 -2
- package/dist/cjs/hooks/useIotaClientQuery.js +3 -1
- package/dist/cjs/hooks/useIotaClientQuery.js.map +2 -2
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +17 -7
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useConnectWallet.js +10 -4
- package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +3 -0
- package/dist/cjs/hooks/wallet/useCurrentWallet.js +7 -3
- package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js +11 -6
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
- package/dist/cjs/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +41 -37
- package/dist/cjs/hooks/wallet/useReportTransactionEffects.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +252 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +21 -27
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
- package/dist/cjs/hooks/wallet/useSignTransaction.d.ts +18 -0
- package/dist/cjs/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +86 -46
- package/dist/cjs/hooks/wallet/useSignTransaction.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSwitchAccount.js +11 -6
- package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
- package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +45 -33
- package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +7 -3
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
- package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useWalletsChanged.js +7 -6
- package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +2 -2
- package/dist/cjs/index.css +5 -10
- package/dist/cjs/index.css.map +3 -3
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +437 -287
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/themes/darkTheme.d.ts +2 -0
- package/dist/cjs/themes/darkTheme.js +88 -0
- package/dist/cjs/themes/darkTheme.js.map +7 -0
- package/dist/cjs/themes/lightTheme.js +13 -8
- package/dist/cjs/themes/lightTheme.js.map +2 -2
- package/dist/cjs/themes/themeContract.d.ts +22 -12
- package/dist/cjs/themes/themeContract.js +13 -8
- package/dist/cjs/themes/themeContract.js.map +2 -2
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/assertUnreachable.js.map +1 -1
- package/dist/cjs/utils/walletUtils.d.ts +2 -2
- package/dist/cjs/utils/walletUtils.js +2 -2
- package/dist/cjs/utils/walletUtils.js.map +2 -2
- package/dist/cjs/walletStore.d.ts +3 -2
- package/dist/cjs/walletStore.js +8 -4
- package/dist/cjs/walletStore.js.map +2 -2
- package/dist/esm/components/AccountDropdownMenu.css +4 -5
- package/dist/esm/components/AccountDropdownMenu.css.css.map +1 -1
- package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
- package/dist/esm/components/AccountDropdownMenu.d.ts +3 -1
- package/dist/esm/components/AccountDropdownMenu.js +39 -95
- package/dist/esm/components/AccountDropdownMenu.js.map +4 -4
- package/dist/esm/components/ConnectButton.css +5 -10
- package/dist/esm/components/ConnectButton.css.map +3 -3
- package/dist/esm/components/ConnectButton.d.ts +5 -3
- package/dist/esm/components/ConnectButton.js +101 -151
- package/dist/esm/components/ConnectButton.js.map +4 -4
- package/dist/esm/components/IotaClientProvider.d.ts +0 -1
- package/dist/esm/components/WalletProvider.d.ts +3 -3
- package/dist/esm/components/WalletProvider.js +114 -74
- package/dist/esm/components/WalletProvider.js.map +2 -2
- package/dist/esm/components/connect-modal/ConnectModal.css +5 -10
- package/dist/esm/components/connect-modal/ConnectModal.css.css.map +1 -1
- package/dist/esm/components/connect-modal/ConnectModal.css.map +3 -3
- package/dist/esm/components/connect-modal/ConnectModal.js +15 -9
- package/dist/esm/components/connect-modal/ConnectModal.js.map +3 -3
- package/dist/esm/components/connect-modal/InfoSection.css.css.map +1 -1
- package/dist/esm/components/connect-modal/InfoSection.css.map +1 -1
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css +4 -5
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css.map +1 -1
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +3 -3
- package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +2 -2
- package/dist/esm/components/connect-modal/views/GetTheWallet.css +78 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.css +35 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.css.map +7 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.d.ts +5 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.js +14 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.js.map +7 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.map +7 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.d.ts +1 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.js +112 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.js.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css +4 -5
- package/dist/esm/components/connect-modal/views/GettingStarted.css.css.map +1 -1
- package/dist/esm/components/connect-modal/views/GettingStarted.css.map +3 -3
- package/dist/esm/components/connect-modal/views/GettingStarted.js +2 -2
- package/dist/esm/components/connect-modal/views/GettingStarted.js.map +1 -1
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css.map +1 -1
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.map +1 -1
- package/dist/esm/components/connect-modal/views/index.css +205 -0
- package/dist/esm/components/connect-modal/views/index.css.map +7 -0
- package/dist/esm/components/connect-modal/views/index.d.ts +3 -0
- package/dist/esm/components/connect-modal/views/index.js +253 -0
- package/dist/esm/components/connect-modal/views/index.js.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css.map +1 -1
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.map +1 -1
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js +1 -1
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +2 -2
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css.map +1 -1
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.map +1 -1
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js.map +1 -1
- package/dist/esm/components/icons/ArrowRightIcon.d.ts +2 -0
- package/dist/esm/components/icons/ArrowRightIcon.js +26 -0
- package/dist/esm/components/icons/ArrowRightIcon.js.map +7 -0
- package/dist/esm/components/icons/ArrowTopRightIcon.d.ts +2 -0
- package/dist/esm/components/icons/ArrowTopRightIcon.js +26 -0
- package/dist/esm/components/icons/ArrowTopRightIcon.js.map +7 -0
- package/dist/esm/components/styling/InjectedThemeStyles.js +15 -8
- package/dist/esm/components/styling/InjectedThemeStyles.js.map +2 -2
- package/dist/esm/components/styling/StyleMarker.css.css.map +1 -1
- package/dist/esm/components/styling/StyleMarker.css.js +2 -2
- package/dist/esm/components/styling/StyleMarker.css.js.map +3 -3
- package/dist/esm/components/styling/StyleMarker.css.map +1 -1
- package/dist/esm/components/styling/StyleMarker.d.ts +0 -1
- package/dist/esm/components/styling/StyleMarker.js +2 -2
- package/dist/esm/components/styling/StyleMarker.js.map +3 -3
- package/dist/esm/components/ui/Button.css +4 -5
- package/dist/esm/components/ui/Button.css.css +4 -5
- package/dist/esm/components/ui/Button.css.css.map +3 -3
- package/dist/esm/components/ui/Button.css.d.ts +0 -1
- package/dist/esm/components/ui/Button.css.js.map +1 -1
- package/dist/esm/components/ui/Button.css.map +3 -3
- package/dist/esm/components/ui/Button.d.ts +1 -1
- package/dist/esm/components/ui/Button.js.map +1 -1
- package/dist/esm/components/ui/Heading.css.css.map +1 -1
- package/dist/esm/components/ui/Heading.css.map +1 -1
- package/dist/esm/components/ui/Heading.d.ts +0 -1
- package/dist/esm/components/ui/IconButton.css +1 -5
- package/dist/esm/components/ui/IconButton.css.css +1 -5
- package/dist/esm/components/ui/IconButton.css.css.map +3 -3
- package/dist/esm/components/ui/IconButton.css.js.map +1 -1
- package/dist/esm/components/ui/IconButton.css.map +3 -3
- package/dist/esm/components/ui/IconButton.d.ts +1 -1
- package/dist/esm/components/ui/IconButton.js.map +1 -1
- package/dist/esm/components/ui/Text.css.css.map +1 -1
- package/dist/esm/components/ui/Text.css.map +1 -1
- package/dist/esm/components/ui/Text.d.ts +0 -1
- package/dist/esm/constants/styleDataAttribute.js.map +1 -1
- package/dist/esm/constants/walletDefaults.d.ts +3 -2
- package/dist/esm/constants/walletDefaults.js +8 -6
- package/dist/esm/constants/walletDefaults.js.map +2 -2
- package/dist/esm/constants/walletMutationKeys.d.ts +3 -2
- package/dist/esm/constants/walletMutationKeys.js +4 -3
- package/dist/esm/constants/walletMutationKeys.js.map +2 -2
- package/dist/esm/contexts/walletContext.d.ts +1 -2
- package/dist/esm/hooks/useIotaClientInfiniteQuery.js.map +2 -2
- package/dist/esm/hooks/useIotaClientQuery.js +3 -1
- package/dist/esm/hooks/useIotaClientQuery.js.map +2 -2
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js +17 -7
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useConnectWallet.js +10 -4
- package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +3 -0
- package/dist/esm/hooks/wallet/useCurrentWallet.js +7 -3
- package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useDisconnectWallet.js +11 -6
- package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
- package/dist/esm/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +38 -34
- package/dist/esm/hooks/wallet/useReportTransactionEffects.js.map +7 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +231 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js +21 -27
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
- package/dist/esm/hooks/wallet/useSignTransaction.d.ts +18 -0
- package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +83 -43
- package/dist/esm/hooks/wallet/useSignTransaction.js.map +7 -0
- package/dist/esm/hooks/wallet/useSwitchAccount.js +11 -6
- package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
- package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +44 -32
- package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +7 -3
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
- package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +1 -1
- package/dist/esm/hooks/wallet/useWalletsChanged.js +7 -6
- package/dist/esm/hooks/wallet/useWalletsChanged.js.map +2 -2
- package/dist/esm/index.css +5 -10
- package/dist/esm/index.css.map +3 -3
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +424 -274
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/themes/darkTheme.d.ts +2 -0
- package/dist/esm/themes/darkTheme.js +67 -0
- package/dist/esm/themes/darkTheme.js.map +7 -0
- package/dist/esm/themes/lightTheme.js +13 -8
- package/dist/esm/themes/lightTheme.js.map +2 -2
- package/dist/esm/themes/themeContract.d.ts +22 -12
- package/dist/esm/themes/themeContract.js +13 -8
- package/dist/esm/themes/themeContract.js.map +2 -2
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/utils/assertUnreachable.js.map +1 -1
- package/dist/esm/utils/walletUtils.d.ts +2 -2
- package/dist/esm/utils/walletUtils.js +2 -2
- package/dist/esm/utils/walletUtils.js.map +2 -2
- package/dist/esm/walletStore.d.ts +3 -2
- package/dist/esm/walletStore.js +8 -4
- package/dist/esm/walletStore.js.map +2 -2
- package/dist/index.css/package.json +5 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -28
- package/src/components/AccountDropdownMenu.tsx +5 -12
- package/src/components/ConnectButton.tsx +8 -4
- package/src/components/WalletProvider.tsx +9 -9
- package/src/components/connect-modal/views/GetTheWallet.css.ts +38 -0
- package/src/components/connect-modal/views/GetTheWallet.tsx +25 -0
- package/src/components/connect-modal/views/GettingStarted.tsx +3 -3
- package/src/components/connect-modal/views/index.ts +6 -0
- package/src/components/connect-modal/wallet-list/WalletList.tsx +1 -1
- package/src/components/icons/ArrowRightIcon.tsx +23 -0
- package/src/components/icons/ArrowTopRightIcon.tsx +23 -0
- package/src/components/styling/InjectedThemeStyles.tsx +4 -0
- package/src/components/ui/Button.css.ts +3 -5
- package/src/components/ui/IconButton.css.ts +0 -3
- package/src/constants/walletDefaults.ts +11 -5
- package/src/constants/walletMutationKeys.ts +3 -2
- package/src/hooks/useIotaClientInfiniteQuery.ts +2 -1
- package/src/hooks/useIotaClientQuery.ts +3 -1
- package/src/hooks/wallet/useAutoConnectWallet.ts +1 -1
- package/src/hooks/wallet/useConnectWallet.ts +6 -1
- package/src/hooks/wallet/useCurrentWallet.ts +4 -0
- package/src/hooks/wallet/useReportTransactionEffects.ts +87 -0
- package/src/hooks/wallet/useSignAndExecuteTransaction.ts +165 -0
- package/src/hooks/wallet/useSignPersonalMessage.ts +11 -25
- package/src/hooks/wallet/useSignTransaction.ts +117 -0
- package/src/hooks/wallet/useUnsafeBurnerWallet.ts +41 -18
- package/src/hooks/wallet/useWalletsChanged.ts +5 -4
- package/src/index.ts +4 -3
- package/src/themes/darkTheme.ts +69 -0
- package/src/themes/lightTheme.ts +11 -6
- package/src/themes/themeContract.ts +11 -6
- package/src/types.ts +1 -1
- package/src/utils/walletUtils.ts +8 -3
- package/src/walletStore.ts +12 -1
- package/dist/cjs/hooks/useResolveIotaNSNames.d.ts +0 -3
- package/dist/cjs/hooks/useResolveIotaNSNames.js +0 -83
- package/dist/cjs/hooks/useResolveIotaNSNames.js.map +0 -7
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
- package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
- package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +0 -7
- package/dist/esm/hooks/useResolveIotaNSNames.d.ts +0 -3
- package/dist/esm/hooks/useResolveIotaNSNames.js +0 -60
- package/dist/esm/hooks/useResolveIotaNSNames.js.map +0 -7
- package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
- package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
- package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
- package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +0 -7
- package/src/hooks/useResolveIotaNSNames.ts +0 -31
- package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +0 -117
- package/src/hooks/wallet/useSignTransactionBlock.ts +0 -85
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// src/hooks/wallet/useSignAndExecuteTransaction.ts
|
|
2
|
+
import { toB64 as toB642 } from "@iota/iota-sdk/utils";
|
|
3
|
+
import { signTransaction } from "@iota/wallet-standard";
|
|
4
|
+
import { useMutation as useMutation2 } from "@tanstack/react-query";
|
|
5
|
+
|
|
6
|
+
// src/constants/walletMutationKeys.ts
|
|
7
|
+
var walletMutationKeys = {
|
|
8
|
+
all: { baseScope: "wallet" },
|
|
9
|
+
connectWallet: formMutationKeyFn("connect-wallet"),
|
|
10
|
+
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
11
|
+
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
12
|
+
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
13
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
14
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
15
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
16
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
17
|
+
};
|
|
18
|
+
function formMutationKeyFn(baseEntity) {
|
|
19
|
+
return function mutationKeyFn(additionalKeys = []) {
|
|
20
|
+
return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// src/errors/walletErrors.ts
|
|
25
|
+
var WalletNotConnectedError = class extends Error {
|
|
26
|
+
};
|
|
27
|
+
var WalletNoAccountSelectedError = class extends Error {
|
|
28
|
+
};
|
|
29
|
+
var WalletFeatureNotSupportedError = class extends Error {
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// src/hooks/useIotaClient.ts
|
|
33
|
+
import { useContext } from "react";
|
|
34
|
+
|
|
35
|
+
// src/components/IotaClientProvider.tsx
|
|
36
|
+
import { getNetwork, isIotaClient, Network, IotaClient } from "@iota/iota-sdk/client";
|
|
37
|
+
import { createContext, useMemo, useState } from "react";
|
|
38
|
+
import { jsx } from "react/jsx-runtime";
|
|
39
|
+
var IotaClientContext = createContext(null);
|
|
40
|
+
var DEFAULT_NETWORKS = {
|
|
41
|
+
localnet: { url: getNetwork(Network.Local).url }
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// src/hooks/useIotaClient.ts
|
|
45
|
+
function useIotaClientContext() {
|
|
46
|
+
const iotaClient = useContext(IotaClientContext);
|
|
47
|
+
if (!iotaClient) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
"Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider"
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return iotaClient;
|
|
53
|
+
}
|
|
54
|
+
function useIotaClient() {
|
|
55
|
+
return useIotaClientContext().client;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
59
|
+
import { useContext as useContext2 } from "react";
|
|
60
|
+
import { useStore } from "zustand";
|
|
61
|
+
|
|
62
|
+
// src/contexts/walletContext.ts
|
|
63
|
+
import { createContext as createContext2 } from "react";
|
|
64
|
+
var WalletContext = createContext2(null);
|
|
65
|
+
|
|
66
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
67
|
+
function useWalletStore(selector) {
|
|
68
|
+
const store = useContext2(WalletContext);
|
|
69
|
+
if (!store) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
"Could not find WalletContext. Ensure that you have set up the WalletProvider."
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
return useStore(store, selector);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// src/hooks/wallet/useCurrentAccount.ts
|
|
78
|
+
function useCurrentAccount() {
|
|
79
|
+
return useWalletStore((state) => state.currentAccount);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// src/hooks/wallet/useCurrentWallet.ts
|
|
83
|
+
function useCurrentWallet() {
|
|
84
|
+
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
85
|
+
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
86
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
87
|
+
switch (connectionStatus) {
|
|
88
|
+
case "connecting":
|
|
89
|
+
return {
|
|
90
|
+
connectionStatus,
|
|
91
|
+
currentWallet: null,
|
|
92
|
+
isDisconnected: false,
|
|
93
|
+
isConnecting: true,
|
|
94
|
+
isConnected: false,
|
|
95
|
+
supportedIntents: []
|
|
96
|
+
};
|
|
97
|
+
case "disconnected":
|
|
98
|
+
return {
|
|
99
|
+
connectionStatus,
|
|
100
|
+
currentWallet: null,
|
|
101
|
+
isDisconnected: true,
|
|
102
|
+
isConnecting: false,
|
|
103
|
+
isConnected: false,
|
|
104
|
+
supportedIntents: []
|
|
105
|
+
};
|
|
106
|
+
case "connected": {
|
|
107
|
+
return {
|
|
108
|
+
connectionStatus,
|
|
109
|
+
currentWallet,
|
|
110
|
+
isDisconnected: false,
|
|
111
|
+
isConnecting: false,
|
|
112
|
+
isConnected: true,
|
|
113
|
+
supportedIntents
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// src/hooks/wallet/useReportTransactionEffects.ts
|
|
120
|
+
import { toB64 } from "@iota/iota-sdk/utils";
|
|
121
|
+
import { useMutation } from "@tanstack/react-query";
|
|
122
|
+
function useReportTransactionEffects({
|
|
123
|
+
mutationKey,
|
|
124
|
+
...mutationOptions
|
|
125
|
+
} = {}) {
|
|
126
|
+
const { currentWallet } = useCurrentWallet();
|
|
127
|
+
const currentAccount = useCurrentAccount();
|
|
128
|
+
return useMutation({
|
|
129
|
+
mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
|
|
130
|
+
mutationFn: async ({
|
|
131
|
+
effects,
|
|
132
|
+
chain = currentWallet?.chains[0],
|
|
133
|
+
account = currentAccount
|
|
134
|
+
}) => {
|
|
135
|
+
if (!currentWallet) {
|
|
136
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
137
|
+
}
|
|
138
|
+
if (!account) {
|
|
139
|
+
throw new WalletNoAccountSelectedError(
|
|
140
|
+
"No wallet account is selected to report transaction effects for"
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
const reportTransactionEffectsFeature = currentWallet.features["iota:reportTransactionEffects"];
|
|
144
|
+
if (reportTransactionEffectsFeature) {
|
|
145
|
+
return await reportTransactionEffectsFeature.reportTransactionEffects({
|
|
146
|
+
effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,
|
|
147
|
+
account,
|
|
148
|
+
chain: chain ?? currentWallet?.chains[0]
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
...mutationOptions
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// src/hooks/wallet/useSignAndExecuteTransaction.ts
|
|
157
|
+
function useSignAndExecuteTransaction({
|
|
158
|
+
mutationKey,
|
|
159
|
+
execute,
|
|
160
|
+
...mutationOptions
|
|
161
|
+
} = {}) {
|
|
162
|
+
const { currentWallet, supportedIntents } = useCurrentWallet();
|
|
163
|
+
const currentAccount = useCurrentAccount();
|
|
164
|
+
const client = useIotaClient();
|
|
165
|
+
const { mutate: reportTransactionEffects } = useReportTransactionEffects();
|
|
166
|
+
const executeTransaction = execute ?? (async ({ bytes, signature }) => {
|
|
167
|
+
const { digest, rawEffects } = await client.executeTransactionBlock({
|
|
168
|
+
transactionBlock: bytes,
|
|
169
|
+
signature,
|
|
170
|
+
options: {
|
|
171
|
+
showRawEffects: true
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
return {
|
|
175
|
+
digest,
|
|
176
|
+
rawEffects,
|
|
177
|
+
effects: toB642(new Uint8Array(rawEffects)),
|
|
178
|
+
bytes,
|
|
179
|
+
signature
|
|
180
|
+
};
|
|
181
|
+
});
|
|
182
|
+
return useMutation2({
|
|
183
|
+
mutationKey: walletMutationKeys.signAndExecuteTransaction(mutationKey),
|
|
184
|
+
mutationFn: async ({ transaction, ...signTransactionArgs }) => {
|
|
185
|
+
if (!currentWallet) {
|
|
186
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
187
|
+
}
|
|
188
|
+
const signerAccount = signTransactionArgs.account ?? currentAccount;
|
|
189
|
+
if (!signerAccount) {
|
|
190
|
+
throw new WalletNoAccountSelectedError(
|
|
191
|
+
"No wallet account is selected to sign the transaction with."
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
const chain = signTransactionArgs.chain ?? signerAccount?.chains[0];
|
|
195
|
+
if (!currentWallet.features["iota:signTransaction"]) {
|
|
196
|
+
throw new WalletFeatureNotSupportedError(
|
|
197
|
+
"This wallet doesn't support the `signTransaction` feature."
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
const { signature, bytes } = await signTransaction(currentWallet, {
|
|
201
|
+
...signTransactionArgs,
|
|
202
|
+
transaction: {
|
|
203
|
+
async toJSON() {
|
|
204
|
+
return typeof transaction === "string" ? transaction : await transaction.toJSON({
|
|
205
|
+
supportedIntents,
|
|
206
|
+
client
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
account: signerAccount,
|
|
211
|
+
chain: signTransactionArgs.chain ?? signerAccount.chains[0]
|
|
212
|
+
});
|
|
213
|
+
const result = await executeTransaction({ bytes, signature });
|
|
214
|
+
let effects;
|
|
215
|
+
if ("effects" in result && result.effects?.bcs) {
|
|
216
|
+
effects = result.effects.bcs;
|
|
217
|
+
} else if ("rawEffects" in result) {
|
|
218
|
+
effects = toB642(new Uint8Array(result.rawEffects));
|
|
219
|
+
} else {
|
|
220
|
+
throw new Error("Could not parse effects from transaction result.");
|
|
221
|
+
}
|
|
222
|
+
reportTransactionEffects({ effects, account: signerAccount, chain });
|
|
223
|
+
return result;
|
|
224
|
+
},
|
|
225
|
+
...mutationOptions
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
export {
|
|
229
|
+
useSignAndExecuteTransaction
|
|
230
|
+
};
|
|
231
|
+
//# sourceMappingURL=useSignAndExecuteTransaction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/hooks/wallet/useSignAndExecuteTransaction.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/hooks/useIotaClient.ts", "../../../../src/components/IotaClientProvider.tsx", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentAccount.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts", "../../../../src/hooks/wallet/useReportTransactionEffects.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@iota/iota-sdk/transactions';\nimport { toB64 } from '@iota/iota-sdk/utils';\nimport type {\n IotaSignAndExecuteTransactionInput,\n IotaSignAndExecuteTransactionOutput,\n} from '@iota/wallet-standard';\nimport { signTransaction } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useIotaClient } from '../useIotaClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\n\ntype UseSignAndExecuteTransactionArgs = PartialBy<\n Omit<IotaSignAndExecuteTransactionInput, 'transaction'>,\n 'account' | 'chain'\n> & {\n transaction: Transaction | string;\n};\n\ntype UseSignAndExecuteTransactionResult = IotaSignAndExecuteTransactionOutput;\n\ntype UseSignAndExecuteTransactionError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype ExecuteTransactionResult =\n | {\n digest: string;\n rawEffects?: number[];\n }\n | {\n effects?: {\n bcs?: string;\n };\n };\n\ntype UseSignAndExecuteTransactionMutationOptions<Result extends ExecuteTransactionResult> = Omit<\n UseMutationOptions<\n Result,\n UseSignAndExecuteTransactionError,\n UseSignAndExecuteTransactionArgs,\n unknown\n >,\n 'mutationFn'\n> & {\n execute?: ({ bytes, signature }: { bytes: string; signature: string }) => Promise<Result>;\n};\n\n/**\n * Mutation hook for prompting the user to sign and execute a transaction.\n */\nexport function useSignAndExecuteTransaction<\n Result extends ExecuteTransactionResult = UseSignAndExecuteTransactionResult,\n>({\n mutationKey,\n execute,\n ...mutationOptions\n}: UseSignAndExecuteTransactionMutationOptions<Result> = {}): UseMutationResult<\n Result,\n UseSignAndExecuteTransactionError,\n UseSignAndExecuteTransactionArgs\n> {\n const { currentWallet, supportedIntents } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n const client = useIotaClient();\n const { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n const executeTransaction: ({\n bytes,\n signature,\n }: {\n bytes: string;\n signature: string;\n }) => Promise<ExecuteTransactionResult> =\n execute ??\n (async ({ bytes, signature }) => {\n const { digest, rawEffects } = await client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showRawEffects: true,\n },\n });\n\n return {\n digest,\n rawEffects,\n effects: toB64(new Uint8Array(rawEffects!)),\n bytes,\n signature,\n };\n });\n\n return useMutation({\n mutationKey: walletMutationKeys.signAndExecuteTransaction(mutationKey),\n mutationFn: async ({ transaction, ...signTransactionArgs }): Promise<Result> => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signerAccount = signTransactionArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the transaction with.',\n );\n }\n const chain = signTransactionArgs.chain ?? signerAccount?.chains[0];\n\n if (!currentWallet.features['iota:signTransaction']) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signTransaction` feature.\",\n );\n }\n\n const { signature, bytes } = await signTransaction(currentWallet, {\n ...signTransactionArgs,\n transaction: {\n async toJSON() {\n return typeof transaction === 'string'\n ? transaction\n : await transaction.toJSON({\n supportedIntents,\n client,\n });\n },\n },\n account: signerAccount,\n chain: signTransactionArgs.chain ?? signerAccount.chains[0],\n });\n\n const result = await executeTransaction({ bytes, signature });\n\n let effects: string;\n\n if ('effects' in result && result.effects?.bcs) {\n effects = result.effects.bcs;\n } else if ('rawEffects' in result) {\n effects = toB64(new Uint8Array(result.rawEffects!));\n } else {\n throw new Error('Could not parse effects from transaction result.');\n }\n\n reportTransactionEffects({ effects, account: signerAccount, chain });\n\n return result as Result;\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n return useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n const supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n supportedIntents,\n } as const;\n }\n }\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB64 } from '@iota/iota-sdk/utils';\nimport type { IotaReportTransactionEffectsInput } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { WalletFeatureNotSupportedError } from '../../errors/walletErrors.js';\nimport {\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseReportTransactionEffectsArgs = Omit<\n PartialBy<IotaReportTransactionEffectsInput, 'account' | 'chain'>,\n 'effects'\n> & {\n effects: string | number[];\n};\n\ntype UseReportTransactionEffectsError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseReportTransactionEffectsMutationOptions = Omit<\n UseMutationOptions<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useReportTransactionEffects({\n mutationKey,\n ...mutationOptions\n}: UseReportTransactionEffectsMutationOptions = {}): UseMutationResult<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),\n mutationFn: async ({\n effects,\n chain = currentWallet?.chains[0],\n account = currentAccount,\n }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n if (!account) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to report transaction effects for',\n );\n }\n\n const reportTransactionEffectsFeature =\n currentWallet.features['iota:reportTransactionEffects'];\n\n if (reportTransactionEffectsFeature) {\n return await reportTransactionEffectsFeature.reportTransactionEffects({\n effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,\n account,\n chain: chain ?? currentWallet?.chains[0],\n });\n }\n },\n ...mutationOptions,\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["toB64", "useMutation", "useContext", "createContext", "useContext", "toB64", "useMutation"]
|
|
7
|
+
}
|
|
@@ -16,9 +16,10 @@ var walletMutationKeys = {
|
|
|
16
16
|
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
17
17
|
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
18
18
|
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
switchAccount: formMutationKeyFn("switch-account")
|
|
19
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
20
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
21
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
22
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
22
23
|
};
|
|
23
24
|
function formMutationKeyFn(baseEntity) {
|
|
24
25
|
return function mutationKeyFn(additionalKeys = []) {
|
|
@@ -54,6 +55,7 @@ function useCurrentAccount() {
|
|
|
54
55
|
function useCurrentWallet() {
|
|
55
56
|
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
56
57
|
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
58
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
57
59
|
switch (connectionStatus) {
|
|
58
60
|
case "connecting":
|
|
59
61
|
return {
|
|
@@ -61,7 +63,8 @@ function useCurrentWallet() {
|
|
|
61
63
|
currentWallet: null,
|
|
62
64
|
isDisconnected: false,
|
|
63
65
|
isConnecting: true,
|
|
64
|
-
isConnected: false
|
|
66
|
+
isConnected: false,
|
|
67
|
+
supportedIntents: []
|
|
65
68
|
};
|
|
66
69
|
case "disconnected":
|
|
67
70
|
return {
|
|
@@ -69,7 +72,8 @@ function useCurrentWallet() {
|
|
|
69
72
|
currentWallet: null,
|
|
70
73
|
isDisconnected: true,
|
|
71
74
|
isConnecting: false,
|
|
72
|
-
isConnected: false
|
|
75
|
+
isConnected: false,
|
|
76
|
+
supportedIntents: []
|
|
73
77
|
};
|
|
74
78
|
case "connected": {
|
|
75
79
|
return {
|
|
@@ -77,7 +81,8 @@ function useCurrentWallet() {
|
|
|
77
81
|
currentWallet,
|
|
78
82
|
isDisconnected: false,
|
|
79
83
|
isConnecting: false,
|
|
80
|
-
isConnected: true
|
|
84
|
+
isConnected: true,
|
|
85
|
+
supportedIntents
|
|
81
86
|
};
|
|
82
87
|
}
|
|
83
88
|
}
|
|
@@ -96,33 +101,22 @@ function useSignPersonalMessage({
|
|
|
96
101
|
if (!currentWallet) {
|
|
97
102
|
throw new WalletNotConnectedError("No wallet is connected.");
|
|
98
103
|
}
|
|
104
|
+
const signPersonalMessageFeature = currentWallet.features["iota:signPersonalMessage"];
|
|
105
|
+
if (!signPersonalMessageFeature) {
|
|
106
|
+
throw new WalletFeatureNotSupportedError(
|
|
107
|
+
"This wallet doesn't support the `signPersonalMessage` feature."
|
|
108
|
+
);
|
|
109
|
+
}
|
|
99
110
|
const signerAccount = signPersonalMessageArgs.account ?? currentAccount;
|
|
100
111
|
if (!signerAccount) {
|
|
101
112
|
throw new WalletNoAccountSelectedError(
|
|
102
113
|
"No wallet account is selected to sign the personal message with."
|
|
103
114
|
);
|
|
104
115
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
account: signerAccount
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
const signMessageFeature = currentWallet.features["iota:signMessage"];
|
|
113
|
-
if (signMessageFeature) {
|
|
114
|
-
console.warn(
|
|
115
|
-
"This wallet doesn't support the `signPersonalMessage` feature... falling back to `signMessage`."
|
|
116
|
-
);
|
|
117
|
-
const { messageBytes, signature } = await signMessageFeature.signMessage({
|
|
118
|
-
...signPersonalMessageArgs,
|
|
119
|
-
account: signerAccount
|
|
120
|
-
});
|
|
121
|
-
return { bytes: messageBytes, signature };
|
|
122
|
-
}
|
|
123
|
-
throw new WalletFeatureNotSupportedError(
|
|
124
|
-
"This wallet doesn't support the `signPersonalMessage` feature."
|
|
125
|
-
);
|
|
116
|
+
return await signPersonalMessageFeature.signPersonalMessage({
|
|
117
|
+
...signPersonalMessageArgs,
|
|
118
|
+
account: signerAccount
|
|
119
|
+
});
|
|
126
120
|
},
|
|
127
121
|
...mutationOptions
|
|
128
122
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/hooks/wallet/useSignPersonalMessage.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentAccount.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n IotaSignPersonalMessageInput,\n IotaSignPersonalMessageOutput,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../..//errors/walletErrors.js';\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseSignPersonalMessageArgs = PartialBy<IotaSignPersonalMessageInput, 'account'>;\n\ntype UseSignPersonalMessageResult = IotaSignPersonalMessageOutput;\n\ntype UseSignPersonalMessageError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseSignPersonalMessageMutationOptions = Omit<\n UseMutationOptions<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useSignPersonalMessage({\n mutationKey,\n ...mutationOptions\n}: UseSignPersonalMessageMutationOptions = {}): UseMutationResult<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),\n mutationFn: async (signPersonalMessageArgs) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const
|
|
5
|
-
"mappings": ";AASA,SAAS,mBAAmB;;;ACFrB,IAAM,0BAAN,cAAsC,MAAM;AAAC;AAO7C,IAAM,+BAAN,cAA2C,MAAM;AAAC;AAKlD,IAAM,iCAAN,cAA6C,MAAM;AAAC;;;ACbpD,IAAM,qBAAqB;AAAA,EAC9B,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,mBAAmB,kBAAkB,oBAAoB;AAAA,EACzD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n IotaSignPersonalMessageInput,\n IotaSignPersonalMessageOutput,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../..//errors/walletErrors.js';\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseSignPersonalMessageArgs = PartialBy<IotaSignPersonalMessageInput, 'account'>;\n\ntype UseSignPersonalMessageResult = IotaSignPersonalMessageOutput;\n\ntype UseSignPersonalMessageError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseSignPersonalMessageMutationOptions = Omit<\n UseMutationOptions<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useSignPersonalMessage({\n mutationKey,\n ...mutationOptions\n}: UseSignPersonalMessageMutationOptions = {}): UseMutationResult<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),\n mutationFn: async (signPersonalMessageArgs) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signPersonalMessageFeature = currentWallet.features['iota:signPersonalMessage'];\n if (!signPersonalMessageFeature) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signPersonalMessage` feature.\",\n );\n }\n\n const signerAccount = signPersonalMessageArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the personal message with.',\n );\n }\n\n return await signPersonalMessageFeature.signPersonalMessage({\n ...signPersonalMessageArgs,\n account: signerAccount,\n });\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n return useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n const supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n supportedIntents,\n } as const;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Transaction } from '@iota/iota-sdk/transactions';
|
|
2
|
+
import type { SignedTransaction, IotaSignTransactionInput } from '@iota/wallet-standard';
|
|
3
|
+
import type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
4
|
+
import { WalletFeatureNotSupportedError, WalletNoAccountSelectedError, WalletNotConnectedError } from '../../errors/walletErrors.js';
|
|
5
|
+
import type { PartialBy } from '../../types/utilityTypes.js';
|
|
6
|
+
type UseSignTransactionArgs = PartialBy<Omit<IotaSignTransactionInput, 'transaction'>, 'account' | 'chain'> & {
|
|
7
|
+
transaction: Transaction | string;
|
|
8
|
+
};
|
|
9
|
+
interface UseSignTransactionResult extends SignedTransaction {
|
|
10
|
+
reportTransactionEffects: (effects: string) => void;
|
|
11
|
+
}
|
|
12
|
+
type UseSignTransactionError = WalletFeatureNotSupportedError | WalletNoAccountSelectedError | WalletNotConnectedError | Error;
|
|
13
|
+
type UseSignTransactionMutationOptions = Omit<UseMutationOptions<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs, unknown>, 'mutationFn'>;
|
|
14
|
+
/**
|
|
15
|
+
* Mutation hook for prompting the user to sign a transaction.
|
|
16
|
+
*/
|
|
17
|
+
export declare function useSignTransaction({ mutationKey, ...mutationOptions }?: UseSignTransactionMutationOptions): UseMutationResult<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs>;
|
|
18
|
+
export {};
|
package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js}
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
// src/hooks/wallet/
|
|
2
|
-
import {
|
|
1
|
+
// src/hooks/wallet/useSignTransaction.ts
|
|
2
|
+
import { signTransaction } from "@iota/wallet-standard";
|
|
3
|
+
import { useMutation as useMutation2 } from "@tanstack/react-query";
|
|
3
4
|
|
|
4
5
|
// src/constants/walletMutationKeys.ts
|
|
5
6
|
var walletMutationKeys = {
|
|
@@ -8,9 +9,10 @@ var walletMutationKeys = {
|
|
|
8
9
|
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
9
10
|
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
10
11
|
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
switchAccount: formMutationKeyFn("switch-account")
|
|
12
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
13
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
14
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
15
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
14
16
|
};
|
|
15
17
|
function formMutationKeyFn(baseEntity) {
|
|
16
18
|
return function mutationKeyFn(additionalKeys = []) {
|
|
@@ -80,6 +82,7 @@ function useCurrentAccount() {
|
|
|
80
82
|
function useCurrentWallet() {
|
|
81
83
|
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
82
84
|
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
85
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
83
86
|
switch (connectionStatus) {
|
|
84
87
|
case "connecting":
|
|
85
88
|
return {
|
|
@@ -87,7 +90,8 @@ function useCurrentWallet() {
|
|
|
87
90
|
currentWallet: null,
|
|
88
91
|
isDisconnected: false,
|
|
89
92
|
isConnecting: true,
|
|
90
|
-
isConnected: false
|
|
93
|
+
isConnected: false,
|
|
94
|
+
supportedIntents: []
|
|
91
95
|
};
|
|
92
96
|
case "disconnected":
|
|
93
97
|
return {
|
|
@@ -95,7 +99,8 @@ function useCurrentWallet() {
|
|
|
95
99
|
currentWallet: null,
|
|
96
100
|
isDisconnected: true,
|
|
97
101
|
isConnecting: false,
|
|
98
|
-
isConnected: false
|
|
102
|
+
isConnected: false,
|
|
103
|
+
supportedIntents: []
|
|
99
104
|
};
|
|
100
105
|
case "connected": {
|
|
101
106
|
return {
|
|
@@ -103,70 +108,105 @@ function useCurrentWallet() {
|
|
|
103
108
|
currentWallet,
|
|
104
109
|
isDisconnected: false,
|
|
105
110
|
isConnecting: false,
|
|
106
|
-
isConnected: true
|
|
111
|
+
isConnected: true,
|
|
112
|
+
supportedIntents
|
|
107
113
|
};
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
// src/hooks/wallet/
|
|
113
|
-
|
|
118
|
+
// src/hooks/wallet/useReportTransactionEffects.ts
|
|
119
|
+
import { toB64 } from "@iota/iota-sdk/utils";
|
|
120
|
+
import { useMutation } from "@tanstack/react-query";
|
|
121
|
+
function useReportTransactionEffects({
|
|
114
122
|
mutationKey,
|
|
115
|
-
executeFromWallet,
|
|
116
123
|
...mutationOptions
|
|
117
124
|
} = {}) {
|
|
118
125
|
const { currentWallet } = useCurrentWallet();
|
|
119
126
|
const currentAccount = useCurrentAccount();
|
|
120
|
-
const client = useIotaClient();
|
|
121
127
|
return useMutation({
|
|
122
|
-
mutationKey: walletMutationKeys.
|
|
123
|
-
mutationFn: async ({
|
|
128
|
+
mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
|
|
129
|
+
mutationFn: async ({
|
|
130
|
+
effects,
|
|
131
|
+
chain = currentWallet?.chains[0],
|
|
132
|
+
account = currentAccount
|
|
133
|
+
}) => {
|
|
124
134
|
if (!currentWallet) {
|
|
125
135
|
throw new WalletNotConnectedError("No wallet is connected.");
|
|
126
136
|
}
|
|
127
|
-
|
|
128
|
-
if (!signerAccount) {
|
|
137
|
+
if (!account) {
|
|
129
138
|
throw new WalletNoAccountSelectedError(
|
|
130
|
-
"No wallet account is selected to
|
|
139
|
+
"No wallet account is selected to report transaction effects for"
|
|
131
140
|
);
|
|
132
141
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
return walletFeature2.signAndExecuteTransactionBlock({
|
|
141
|
-
...signTransactionBlockArgs,
|
|
142
|
-
account: signerAccount,
|
|
143
|
-
chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0],
|
|
144
|
-
requestType,
|
|
145
|
-
options
|
|
142
|
+
const reportTransactionEffectsFeature = currentWallet.features["iota:reportTransactionEffects"];
|
|
143
|
+
if (reportTransactionEffectsFeature) {
|
|
144
|
+
return await reportTransactionEffectsFeature.reportTransactionEffects({
|
|
145
|
+
effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,
|
|
146
|
+
account,
|
|
147
|
+
chain: chain ?? currentWallet?.chains[0]
|
|
146
148
|
});
|
|
147
149
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
},
|
|
151
|
+
...mutationOptions
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/hooks/wallet/useSignTransaction.ts
|
|
156
|
+
function useSignTransaction({
|
|
157
|
+
mutationKey,
|
|
158
|
+
...mutationOptions
|
|
159
|
+
} = {}) {
|
|
160
|
+
const { currentWallet } = useCurrentWallet();
|
|
161
|
+
const currentAccount = useCurrentAccount();
|
|
162
|
+
const client = useIotaClient();
|
|
163
|
+
const { mutate: reportTransactionEffects } = useReportTransactionEffects();
|
|
164
|
+
return useMutation2({
|
|
165
|
+
mutationKey: walletMutationKeys.signTransaction(mutationKey),
|
|
166
|
+
mutationFn: async ({ transaction, ...signTransactionArgs }) => {
|
|
167
|
+
if (!currentWallet) {
|
|
168
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
169
|
+
}
|
|
170
|
+
const signerAccount = signTransactionArgs.account ?? currentAccount;
|
|
171
|
+
if (!signerAccount) {
|
|
172
|
+
throw new WalletNoAccountSelectedError(
|
|
173
|
+
"No wallet account is selected to sign the transaction with."
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
if (!currentWallet.features["iota:signTransaction"]) {
|
|
150
177
|
throw new WalletFeatureNotSupportedError(
|
|
151
|
-
"This wallet doesn't support the `
|
|
178
|
+
"This wallet doesn't support the `signTransaction` feature."
|
|
152
179
|
);
|
|
153
180
|
}
|
|
154
|
-
const {
|
|
155
|
-
...
|
|
181
|
+
const { bytes, signature } = await signTransaction(currentWallet, {
|
|
182
|
+
...signTransactionArgs,
|
|
183
|
+
transaction: {
|
|
184
|
+
toJSON: async () => {
|
|
185
|
+
return typeof transaction === "string" ? transaction : await transaction.toJSON({
|
|
186
|
+
supportedIntents: [],
|
|
187
|
+
client
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
},
|
|
156
191
|
account: signerAccount,
|
|
157
|
-
chain:
|
|
192
|
+
chain: signTransactionArgs.chain ?? signerAccount.chains[0]
|
|
158
193
|
});
|
|
159
|
-
return
|
|
160
|
-
|
|
194
|
+
return {
|
|
195
|
+
bytes,
|
|
161
196
|
signature,
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
197
|
+
reportTransactionEffects: (effects) => {
|
|
198
|
+
reportTransactionEffects({
|
|
199
|
+
effects,
|
|
200
|
+
account: signerAccount,
|
|
201
|
+
chain: signTransactionArgs.chain ?? signerAccount.chains[0]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
};
|
|
165
205
|
},
|
|
166
206
|
...mutationOptions
|
|
167
207
|
});
|
|
168
208
|
}
|
|
169
209
|
export {
|
|
170
|
-
|
|
210
|
+
useSignTransaction
|
|
171
211
|
};
|
|
172
|
-
//# sourceMappingURL=
|
|
212
|
+
//# sourceMappingURL=useSignTransaction.js.map
|