@mysten/dapp-kit 0.5.0 → 0.6.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.
Files changed (123) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +4 -4
  3. package/dist/cjs/components/AccountDropdownMenu.js +34 -6
  4. package/dist/cjs/components/AccountDropdownMenu.js.map +2 -2
  5. package/dist/cjs/components/ConnectButton.js +49 -14
  6. package/dist/cjs/components/ConnectButton.js.map +3 -3
  7. package/dist/cjs/components/WalletProvider.js +91 -28
  8. package/dist/cjs/components/WalletProvider.js.map +3 -3
  9. package/dist/cjs/components/connect-modal/ConnectModal.js +15 -8
  10. package/dist/cjs/components/connect-modal/ConnectModal.js.map +2 -2
  11. package/dist/cjs/hooks/useResolveSuiNSNames.d.ts +1 -105
  12. package/dist/cjs/hooks/useResolveSuiNSNames.js +3 -3
  13. package/dist/cjs/hooks/useResolveSuiNSNames.js.map +2 -2
  14. package/dist/cjs/hooks/useSuiClientInfiniteQuery.d.ts +7 -8
  15. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js +11 -7
  16. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js.map +2 -2
  17. package/dist/cjs/hooks/useSuiClientMutation.d.ts +1 -1
  18. package/dist/cjs/hooks/useSuiClientQuery.d.ts +3 -2
  19. package/dist/cjs/hooks/useSuiClientQuery.js.map +2 -2
  20. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +65 -15
  21. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +3 -3
  22. package/dist/cjs/hooks/wallet/useAutoConnectionStatus.d.ts +4 -0
  23. package/dist/cjs/hooks/wallet/useAutoConnectionStatus.js +50 -0
  24. package/dist/cjs/hooks/wallet/useAutoConnectionStatus.js.map +7 -0
  25. package/dist/cjs/hooks/wallet/useConnectWallet.d.ts +1 -1
  26. package/dist/cjs/hooks/wallet/useConnectWallet.js +15 -8
  27. package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
  28. package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +19 -1
  29. package/dist/cjs/hooks/wallet/useCurrentWallet.js +29 -1
  30. package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
  31. package/dist/cjs/hooks/wallet/useDisconnectWallet.d.ts +1 -1
  32. package/dist/cjs/hooks/wallet/useDisconnectWallet.js +30 -2
  33. package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
  34. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +1 -1
  35. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js +30 -2
  36. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +2 -2
  37. package/dist/cjs/hooks/wallet/useSignPersonalMessage.d.ts +1 -1
  38. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +30 -2
  39. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  40. package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +1 -1
  41. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js +30 -2
  42. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +2 -2
  43. package/dist/cjs/hooks/wallet/useSwitchAccount.d.ts +1 -1
  44. package/dist/cjs/hooks/wallet/useSwitchAccount.js +30 -2
  45. package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
  46. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +30 -2
  47. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  48. package/dist/cjs/index.d.ts +1 -0
  49. package/dist/cjs/index.js +112 -37
  50. package/dist/cjs/index.js.map +4 -4
  51. package/dist/cjs/walletStore.d.ts +10 -2
  52. package/dist/cjs/walletStore.js +23 -4
  53. package/dist/cjs/walletStore.js.map +2 -2
  54. package/dist/esm/components/AccountDropdownMenu.js +34 -6
  55. package/dist/esm/components/AccountDropdownMenu.js.map +2 -2
  56. package/dist/esm/components/ConnectButton.js +49 -14
  57. package/dist/esm/components/ConnectButton.js.map +3 -3
  58. package/dist/esm/components/WalletProvider.js +91 -28
  59. package/dist/esm/components/WalletProvider.js.map +3 -3
  60. package/dist/esm/components/connect-modal/ConnectModal.js +15 -8
  61. package/dist/esm/components/connect-modal/ConnectModal.js.map +2 -2
  62. package/dist/esm/hooks/useResolveSuiNSNames.d.ts +1 -105
  63. package/dist/esm/hooks/useResolveSuiNSNames.js +3 -3
  64. package/dist/esm/hooks/useResolveSuiNSNames.js.map +2 -2
  65. package/dist/esm/hooks/useSuiClientInfiniteQuery.d.ts +7 -8
  66. package/dist/esm/hooks/useSuiClientInfiniteQuery.js +11 -7
  67. package/dist/esm/hooks/useSuiClientInfiniteQuery.js.map +2 -2
  68. package/dist/esm/hooks/useSuiClientMutation.d.ts +1 -1
  69. package/dist/esm/hooks/useSuiClientQuery.d.ts +3 -2
  70. package/dist/esm/hooks/useSuiClientQuery.js.map +2 -2
  71. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +65 -15
  72. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +3 -3
  73. package/dist/esm/hooks/wallet/useAutoConnectionStatus.d.ts +4 -0
  74. package/dist/esm/hooks/wallet/useAutoConnectionStatus.js +27 -0
  75. package/dist/esm/hooks/wallet/useAutoConnectionStatus.js.map +7 -0
  76. package/dist/esm/hooks/wallet/useConnectWallet.d.ts +1 -1
  77. package/dist/esm/hooks/wallet/useConnectWallet.js +15 -8
  78. package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
  79. package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +19 -1
  80. package/dist/esm/hooks/wallet/useCurrentWallet.js +29 -1
  81. package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
  82. package/dist/esm/hooks/wallet/useDisconnectWallet.d.ts +1 -1
  83. package/dist/esm/hooks/wallet/useDisconnectWallet.js +30 -2
  84. package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
  85. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +1 -1
  86. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js +30 -2
  87. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +2 -2
  88. package/dist/esm/hooks/wallet/useSignPersonalMessage.d.ts +1 -1
  89. package/dist/esm/hooks/wallet/useSignPersonalMessage.js +30 -2
  90. package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  91. package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +1 -1
  92. package/dist/esm/hooks/wallet/useSignTransactionBlock.js +30 -2
  93. package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +2 -2
  94. package/dist/esm/hooks/wallet/useSwitchAccount.d.ts +1 -1
  95. package/dist/esm/hooks/wallet/useSwitchAccount.js +30 -2
  96. package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
  97. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +30 -2
  98. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  99. package/dist/esm/index.d.ts +1 -0
  100. package/dist/esm/index.js +112 -37
  101. package/dist/esm/index.js.map +4 -4
  102. package/dist/esm/walletStore.d.ts +10 -2
  103. package/dist/esm/walletStore.js +23 -4
  104. package/dist/esm/walletStore.js.map +2 -2
  105. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  106. package/dist/tsconfig.tsbuildinfo +1 -1
  107. package/package.json +5 -5
  108. package/src/components/WalletProvider.tsx +1 -0
  109. package/src/hooks/useResolveSuiNSNames.ts +5 -6
  110. package/src/hooks/useSuiClientInfiniteQuery.ts +38 -24
  111. package/src/hooks/useSuiClientQuery.ts +11 -7
  112. package/src/hooks/wallet/useAutoConnectWallet.ts +24 -7
  113. package/src/hooks/wallet/useAutoConnectionStatus.ts +12 -0
  114. package/src/hooks/wallet/useConnectWallet.ts +17 -8
  115. package/src/hooks/wallet/useCurrentWallet.ts +30 -1
  116. package/src/hooks/wallet/useDisconnectWallet.ts +1 -1
  117. package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +1 -1
  118. package/src/hooks/wallet/useSignPersonalMessage.ts +1 -1
  119. package/src/hooks/wallet/useSignTransactionBlock.ts +1 -1
  120. package/src/hooks/wallet/useSwitchAccount.ts +1 -1
  121. package/src/hooks/wallet/useWalletPropertiesChanged.ts +1 -1
  122. package/src/index.ts +1 -0
  123. package/src/walletStore.ts +30 -2
@@ -68,7 +68,35 @@ function useWalletStore(selector) {
68
68
 
69
69
  // src/hooks/wallet/useCurrentWallet.ts
70
70
  function useCurrentWallet() {
71
- return useWalletStore((state) => state.currentWallet);
71
+ const currentWallet = useWalletStore((state) => state.currentWallet);
72
+ const connectionStatus = useWalletStore((state) => state.connectionStatus);
73
+ switch (connectionStatus) {
74
+ case "connecting":
75
+ return {
76
+ connectionStatus,
77
+ currentWallet: null,
78
+ isDisconnected: false,
79
+ isConnecting: true,
80
+ isConnected: false
81
+ };
82
+ case "disconnected":
83
+ return {
84
+ connectionStatus,
85
+ currentWallet: null,
86
+ isDisconnected: true,
87
+ isConnecting: false,
88
+ isConnected: false
89
+ };
90
+ case "connected": {
91
+ return {
92
+ connectionStatus,
93
+ currentWallet,
94
+ isDisconnected: false,
95
+ isConnecting: false,
96
+ isConnected: true
97
+ };
98
+ }
99
+ }
72
100
  }
73
101
 
74
102
  // src/hooks/wallet/useSwitchAccount.ts
@@ -76,7 +104,7 @@ function useSwitchAccount({
76
104
  mutationKey,
77
105
  ...mutationOptions
78
106
  } = {}) {
79
- const currentWallet = useCurrentWallet();
107
+ const { currentWallet } = useCurrentWallet();
80
108
  const setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);
81
109
  return (0, import_react_query.useMutation)({
82
110
  mutationKey: walletMutationKeys.switchAccount(mutationKey),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/wallet/useSwitchAccount.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport type { UseMutationOptions } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n\taccount: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n\tUseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n\tmutationKey,\n\t...mutationOptions\n}: UseSwitchAccountMutationOptions = {}) {\n\tconst currentWallet = useCurrentWallet();\n\tconst setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.switchAccount(mutationKey),\n\t\tmutationFn: async ({ account }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst accountToSelect = currentWallet.accounts.find(\n\t\t\t\t(walletAccount) => walletAccount.address === account.address,\n\t\t\t);\n\t\t\tif (!accountToSelect) {\n\t\t\t\tthrow new WalletAccountNotFoundError(\n\t\t\t\t\t`No account with address ${account.address} is connected to ${currentWallet.name}.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetAccountSwitched(accountToSelect);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n\tsignAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\treturn useWalletStore((state) => state.currentWallet);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,yBAA4B;;;ACArB,IAAM,qBAAqB;AAAA,EACjC,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,sBAAsB,kBAAkB,wBAAwB;AAAA,EAChE,gCAAgC,kBAAkB,oCAAoC;AAAA,EACtF,eAAe,kBAAkB,gBAAgB;AAClD;AAEA,SAAS,kBAAkB,YAAoB;AAC9C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC/D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACrE;AACD;;;ACbO,IAAM,0BAAN,cAAsC,MAAM;AAAC;AAiB7C,IAAM,6BAAN,cAAyC,MAAM;AAAC;;;ACpBvD,IAAAA,gBAA2B;AAC3B,qBAAyB;;;ACDzB,mBAA8B;AAIvB,IAAM,oBAAgB,4BAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACxE,QAAM,YAAQ,0BAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,aAAO,yBAAS,OAAO,QAAQ;AAChC;;;AETO,SAAS,mBAAmB;AAClC,SAAO,eAAe,CAAC,UAAU,MAAM,aAAa;AACrD;;;ALkBO,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA,GAAG;AACJ,IAAqC,CAAC,GAAG;AACxC,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAE7E,aAAO,gCAAY;AAAA,IAClB,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,MAAM;AAClC,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,YAAM,kBAAkB,cAAc,SAAS;AAAA,QAC9C,CAAC,kBAAkB,cAAc,YAAY,QAAQ;AAAA,MACtD;AACA,UAAI,CAAC,iBAAiB;AACrB,cAAM,IAAI;AAAA,UACT,2BAA2B,QAAQ,2BAA2B,cAAc;AAAA,QAC7E;AAAA,MACD;AAEA,yBAAmB,eAAe;AAAA,IACnC;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport type { UseMutationOptions } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n\taccount: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n\tUseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n\tmutationKey,\n\t...mutationOptions\n}: UseSwitchAccountMutationOptions = {}) {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.switchAccount(mutationKey),\n\t\tmutationFn: async ({ account }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst accountToSelect = currentWallet.accounts.find(\n\t\t\t\t(walletAccount) => walletAccount.address === account.address,\n\t\t\t);\n\t\t\tif (!accountToSelect) {\n\t\t\t\tthrow new WalletAccountNotFoundError(\n\t\t\t\t\t`No account with address ${account.address} is connected to ${currentWallet.name}.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetAccountSwitched(accountToSelect);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n\tsignAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,yBAA4B;;;ACArB,IAAM,qBAAqB;AAAA,EACjC,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,sBAAsB,kBAAkB,wBAAwB;AAAA,EAChE,gCAAgC,kBAAkB,oCAAoC;AAAA,EACtF,eAAe,kBAAkB,gBAAgB;AAClD;AAEA,SAAS,kBAAkB,YAAoB;AAC9C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC/D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACrE;AACD;;;ACbO,IAAM,0BAAN,cAAsC,MAAM;AAAC;AAiB7C,IAAM,6BAAN,cAAyC,MAAM;AAAC;;;ACpBvD,IAAAA,gBAA2B;AAC3B,qBAAyB;;;ACDzB,mBAA8B;AAIvB,IAAM,oBAAgB,4BAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACxE,QAAM,YAAQ,0BAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,aAAO,yBAAS,OAAO,QAAQ;AAChC;;;AETO,SAAS,mBAAmB;AAClC,QAAM,gBAAgB,eAAe,CAAC,UAAU,MAAM,aAAa;AACnE,QAAM,mBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAEzE,UAAQ,kBAAkB;AAAA,IACzB,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK,aAAa;AACjB,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AACD;;;ALXO,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA,GAAG;AACJ,IAAqC,CAAC,GAAG;AACxC,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAE7E,aAAO,gCAAY;AAAA,IAClB,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,MAAM;AAClC,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,YAAM,kBAAkB,cAAc,SAAS;AAAA,QAC9C,CAAC,kBAAkB,cAAc,YAAY,QAAQ;AAAA,MACtD;AACA,UAAI,CAAC,iBAAiB;AACrB,cAAM,IAAI;AAAA,UACT,2BAA2B,QAAQ,2BAA2B,cAAc;AAAA,QAC7E;AAAA,MACD;AAEA,yBAAmB,eAAe;AAAA,IACnC;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;",
6
6
  "names": ["import_react"]
7
7
  }
@@ -46,12 +46,40 @@ function useWalletStore(selector) {
46
46
 
47
47
  // src/hooks/wallet/useCurrentWallet.ts
48
48
  function useCurrentWallet() {
49
- return useWalletStore((state) => state.currentWallet);
49
+ const currentWallet = useWalletStore((state) => state.currentWallet);
50
+ const connectionStatus = useWalletStore((state) => state.connectionStatus);
51
+ switch (connectionStatus) {
52
+ case "connecting":
53
+ return {
54
+ connectionStatus,
55
+ currentWallet: null,
56
+ isDisconnected: false,
57
+ isConnecting: true,
58
+ isConnected: false
59
+ };
60
+ case "disconnected":
61
+ return {
62
+ connectionStatus,
63
+ currentWallet: null,
64
+ isDisconnected: true,
65
+ isConnecting: false,
66
+ isConnected: false
67
+ };
68
+ case "connected": {
69
+ return {
70
+ connectionStatus,
71
+ currentWallet,
72
+ isDisconnected: false,
73
+ isConnecting: false,
74
+ isConnected: true
75
+ };
76
+ }
77
+ }
50
78
  }
51
79
 
52
80
  // src/hooks/wallet/useWalletPropertiesChanged.ts
53
81
  function useWalletPropertiesChanged() {
54
- const currentWallet = useCurrentWallet();
82
+ const { currentWallet } = useCurrentWallet();
55
83
  const updateWalletAccounts = useWalletStore((state) => state.updateWalletAccounts);
56
84
  (0, import_react3.useEffect)(() => {
57
85
  const unsubscribeFromEvents = currentWallet?.features["standard:events"].on(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/wallet/useWalletPropertiesChanged.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useEffect } from 'react';\n\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Internal hook for easily handling various changes in properties for a wallet.\n */\nexport function useWalletPropertiesChanged() {\n\tconst currentWallet = useCurrentWallet();\n\tconst updateWalletAccounts = useWalletStore((state) => state.updateWalletAccounts);\n\n\tuseEffect(() => {\n\t\tconst unsubscribeFromEvents = currentWallet?.features['standard:events'].on(\n\t\t\t'change',\n\t\t\t({ accounts }) => {\n\t\t\t\t// TODO: We should handle features changing that might make the list of wallets\n\t\t\t\t// or even the current wallet incompatible with the dApp.\n\t\t\t\tif (accounts) {\n\t\t\t\t\tupdateWalletAccounts(accounts);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t\treturn unsubscribeFromEvents;\n\t}, [currentWallet?.features, updateWalletAccounts]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\treturn useWalletStore((state) => state.currentWallet);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,IAAAA,gBAA0B;;;ACA1B,IAAAC,gBAA2B;AAC3B,qBAAyB;;;ACDzB,mBAA8B;AAIvB,IAAM,oBAAgB,4BAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACxE,QAAM,YAAQ,0BAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,aAAO,yBAAS,OAAO,QAAQ;AAChC;;;AETO,SAAS,mBAAmB;AAClC,SAAO,eAAe,CAAC,UAAU,MAAM,aAAa;AACrD;;;AHCO,SAAS,6BAA6B;AAC5C,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,uBAAuB,eAAe,CAAC,UAAU,MAAM,oBAAoB;AAEjF,+BAAU,MAAM;AACf,UAAM,wBAAwB,eAAe,SAAS,iBAAiB,EAAE;AAAA,MACxE;AAAA,MACA,CAAC,EAAE,SAAS,MAAM;AAGjB,YAAI,UAAU;AACb,+BAAqB,QAAQ;AAAA,QAC9B;AAAA,MACD;AAAA,IACD;AACA,WAAO;AAAA,EACR,GAAG,CAAC,eAAe,UAAU,oBAAoB,CAAC;AACnD;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useEffect } from 'react';\n\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Internal hook for easily handling various changes in properties for a wallet.\n */\nexport function useWalletPropertiesChanged() {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst updateWalletAccounts = useWalletStore((state) => state.updateWalletAccounts);\n\n\tuseEffect(() => {\n\t\tconst unsubscribeFromEvents = currentWallet?.features['standard:events'].on(\n\t\t\t'change',\n\t\t\t({ accounts }) => {\n\t\t\t\t// TODO: We should handle features changing that might make the list of wallets\n\t\t\t\t// or even the current wallet incompatible with the dApp.\n\t\t\t\tif (accounts) {\n\t\t\t\t\tupdateWalletAccounts(accounts);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t\treturn unsubscribeFromEvents;\n\t}, [currentWallet?.features, updateWalletAccounts]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,IAAAA,gBAA0B;;;ACA1B,IAAAC,gBAA2B;AAC3B,qBAAyB;;;ACDzB,mBAA8B;AAIvB,IAAM,oBAAgB,4BAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACxE,QAAM,YAAQ,0BAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,aAAO,yBAAS,OAAO,QAAQ;AAChC;;;AETO,SAAS,mBAAmB;AAClC,QAAM,gBAAgB,eAAe,CAAC,UAAU,MAAM,aAAa;AACnE,QAAM,mBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAEzE,UAAQ,kBAAkB;AAAA,IACzB,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK,aAAa;AACjB,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AACD;;;AH5BO,SAAS,6BAA6B;AAC5C,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,uBAAuB,eAAe,CAAC,UAAU,MAAM,oBAAoB;AAEjF,+BAAU,MAAM;AACf,UAAM,wBAAwB,eAAe,SAAS,iBAAiB,EAAE;AAAA,MACxE;AAAA,MACA,CAAC,EAAE,SAAS,MAAM;AAGjB,YAAI,UAAU;AACb,+BAAqB,QAAQ;AAAA,QAC9B;AAAA,MACD;AAAA,IACD;AACA,WAAO;AAAA,EACR,GAAG,CAAC,eAAe,UAAU,oBAAoB,CAAC;AACnD;",
6
6
  "names": ["import_react", "import_react"]
7
7
  }
@@ -10,6 +10,7 @@ export * from './hooks/useSuiClientInfiniteQuery.js';
10
10
  export * from './hooks/useSuiClientMutation.js';
11
11
  export * from './hooks/useSuiClientQuery.js';
12
12
  export * from './hooks/wallet/useAccounts.js';
13
+ export * from './hooks/wallet/useAutoConnectionStatus.js';
13
14
  export * from './hooks/wallet/useConnectWallet.js';
14
15
  export * from './hooks/wallet/useCurrentAccount.js';
15
16
  export * from './hooks/wallet/useCurrentWallet.js';
package/dist/cjs/index.js CHANGED
@@ -71,6 +71,7 @@ __export(src_exports, {
71
71
  createNetworkConfig: () => createNetworkConfig,
72
72
  lightTheme: () => lightTheme,
73
73
  useAccounts: () => useAccounts,
74
+ useAutoConnectionStatus: () => useAutoConnectionStatus,
74
75
  useConnectWallet: () => useConnectWallet,
75
76
  useCurrentAccount: () => useCurrentAccount,
76
77
  useCurrentWallet: () => useCurrentWallet,
@@ -138,16 +139,23 @@ function useConnectWallet({
138
139
  ...mutationOptions
139
140
  } = {}) {
140
141
  const setWalletConnected = useWalletStore((state) => state.setWalletConnected);
142
+ const setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);
141
143
  return (0, import_react_query.useMutation)({
142
144
  mutationKey: walletMutationKeys.connectWallet(mutationKey),
143
- mutationFn: async ({ wallet, accountAddress, ...standardConnectInput }) => {
144
- const connectResult = await wallet.features["standard:connect"].connect(standardConnectInput);
145
- const connectedSuiAccounts = connectResult.accounts.filter(
146
- (account) => account.chains.some((chain) => chain.split(":")[0] === "sui")
147
- );
148
- const selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);
149
- setWalletConnected(wallet, connectedSuiAccounts, selectedAccount);
150
- return { accounts: connectedSuiAccounts };
145
+ mutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {
146
+ try {
147
+ setConnectionStatus("connecting");
148
+ const connectResult = await wallet.features["standard:connect"].connect(connectArgs);
149
+ const connectedSuiAccounts = connectResult.accounts.filter(
150
+ (account) => account.chains.some((chain) => chain.split(":")[0] === "sui")
151
+ );
152
+ const selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);
153
+ setWalletConnected(wallet, connectedSuiAccounts, selectedAccount);
154
+ return { accounts: connectedSuiAccounts };
155
+ } catch (error) {
156
+ setConnectionStatus("disconnected");
157
+ throw error;
158
+ }
151
159
  },
152
160
  ...mutationOptions
153
161
  });
@@ -685,20 +693,20 @@ function useSuiClientQuery(...args) {
685
693
 
686
694
  // src/hooks/useResolveSuiNSNames.ts
687
695
  function useResolveSuiNSName(address, options) {
688
- const { data, ...rest } = useSuiClientQuery(
696
+ return useSuiClientQuery(
689
697
  "resolveNameServiceNames",
690
698
  {
691
699
  address,
692
700
  limit: 1
693
701
  },
694
702
  {
703
+ ...options,
695
704
  refetchOnWindowFocus: false,
696
705
  retry: false,
697
- ...options,
706
+ select: (data) => data.data.length > 0 ? data.data[0] : null,
698
707
  enabled: !!address && options?.enabled !== false
699
708
  }
700
709
  );
701
- return { data: data?.data?.[0] ?? null, ...rest };
702
710
  }
703
711
 
704
712
  // src/hooks/wallet/useAccounts.ts
@@ -721,7 +729,35 @@ var WalletAccountNotFoundError = class extends Error {
721
729
 
722
730
  // src/hooks/wallet/useCurrentWallet.ts
723
731
  function useCurrentWallet() {
724
- return useWalletStore((state) => state.currentWallet);
732
+ const currentWallet = useWalletStore((state) => state.currentWallet);
733
+ const connectionStatus2 = useWalletStore((state) => state.connectionStatus);
734
+ switch (connectionStatus2) {
735
+ case "connecting":
736
+ return {
737
+ connectionStatus: connectionStatus2,
738
+ currentWallet: null,
739
+ isDisconnected: false,
740
+ isConnecting: true,
741
+ isConnected: false
742
+ };
743
+ case "disconnected":
744
+ return {
745
+ connectionStatus: connectionStatus2,
746
+ currentWallet: null,
747
+ isDisconnected: true,
748
+ isConnecting: false,
749
+ isConnected: false
750
+ };
751
+ case "connected": {
752
+ return {
753
+ connectionStatus: connectionStatus2,
754
+ currentWallet,
755
+ isDisconnected: false,
756
+ isConnecting: false,
757
+ isConnected: true
758
+ };
759
+ }
760
+ }
725
761
  }
726
762
 
727
763
  // src/hooks/wallet/useDisconnectWallet.ts
@@ -729,7 +765,7 @@ function useDisconnectWallet({
729
765
  mutationKey,
730
766
  ...mutationOptions
731
767
  } = {}) {
732
- const currentWallet = useCurrentWallet();
768
+ const { currentWallet } = useCurrentWallet();
733
769
  const setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);
734
770
  return (0, import_react_query3.useMutation)({
735
771
  mutationKey: walletMutationKeys.disconnectWallet(mutationKey),
@@ -754,7 +790,7 @@ function useSwitchAccount({
754
790
  mutationKey,
755
791
  ...mutationOptions
756
792
  } = {}) {
757
- const currentWallet = useCurrentWallet();
793
+ const { currentWallet } = useCurrentWallet();
758
794
  const setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);
759
795
  return (0, import_react_query4.useMutation)({
760
796
  mutationKey: walletMutationKeys.switchAccount(mutationKey),
@@ -880,25 +916,35 @@ var import_react15 = require("react");
880
916
  var import_react11 = require("react");
881
917
  function useAutoConnectWallet(autoConnectEnabled) {
882
918
  const { mutate: connectWallet } = useConnectWallet();
883
- const wallets = useWallets();
919
+ const setAutoConnectionStatus = useWalletStore((state) => state.setAutoConnectionStatus);
884
920
  const lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);
885
921
  const lastConnectedAccountAddress = useWalletStore((state) => state.lastConnectedAccountAddress);
922
+ const wallets = useWallets();
923
+ const { isDisconnected } = useCurrentWallet();
886
924
  (0, import_react11.useEffect)(() => {
887
- if (!autoConnectEnabled || !lastConnectedWalletName)
925
+ if (!autoConnectEnabled || !lastConnectedWalletName || !lastConnectedAccountAddress || !isDisconnected) {
888
926
  return;
927
+ }
889
928
  const wallet = wallets.find((wallet2) => wallet2.name === lastConnectedWalletName);
890
929
  if (wallet) {
891
- connectWallet({
892
- wallet,
893
- accountAddress: lastConnectedAccountAddress || void 0,
894
- silent: true
895
- });
930
+ connectWallet(
931
+ {
932
+ wallet,
933
+ accountAddress: lastConnectedAccountAddress,
934
+ silent: true
935
+ },
936
+ {
937
+ onSettled: () => setAutoConnectionStatus("settled")
938
+ }
939
+ );
896
940
  }
897
941
  }, [
898
942
  autoConnectEnabled,
899
943
  connectWallet,
944
+ isDisconnected,
900
945
  lastConnectedAccountAddress,
901
946
  lastConnectedWalletName,
947
+ setAutoConnectionStatus,
902
948
  wallets
903
949
  ]);
904
950
  }
@@ -1022,7 +1068,7 @@ function registerUnsafeBurnerWallet(suiClient) {
1022
1068
  // src/hooks/wallet/useWalletPropertiesChanged.ts
1023
1069
  var import_react13 = require("react");
1024
1070
  function useWalletPropertiesChanged() {
1025
- const currentWallet = useCurrentWallet();
1071
+ const { currentWallet } = useCurrentWallet();
1026
1072
  const updateWalletAccounts = useWalletStore((state) => state.updateWalletAccounts);
1027
1073
  (0, import_react13.useEffect)(() => {
1028
1074
  const unsubscribeFromEvents = currentWallet?.features["standard:events"].on(
@@ -1141,7 +1187,12 @@ var lightTheme = {
1141
1187
  // src/walletStore.ts
1142
1188
  var import_zustand2 = require("zustand");
1143
1189
  var import_middleware = require("zustand/middleware");
1144
- function createWalletStore({ wallets, storage, storageKey }) {
1190
+ function createWalletStore({
1191
+ wallets,
1192
+ storage,
1193
+ storageKey,
1194
+ autoConnect
1195
+ }) {
1145
1196
  return (0, import_zustand2.createStore)()(
1146
1197
  (0, import_middleware.persist)(
1147
1198
  (set, get) => ({
@@ -1152,13 +1203,25 @@ function createWalletStore({ wallets, storage, storageKey }) {
1152
1203
  lastConnectedAccountAddress: null,
1153
1204
  lastConnectedWalletName: null,
1154
1205
  connectionStatus: "disconnected",
1206
+ autoConnectionStatus: autoConnect ? "idle" : "disabled",
1207
+ setConnectionStatus(connectionStatus2) {
1208
+ set(() => ({
1209
+ connectionStatus: connectionStatus2
1210
+ }));
1211
+ },
1212
+ setAutoConnectionStatus(autoConnectionStatus) {
1213
+ set(() => ({
1214
+ autoConnectionStatus
1215
+ }));
1216
+ },
1155
1217
  setWalletConnected(wallet, connectedAccounts, selectedAccount) {
1156
1218
  set(() => ({
1157
1219
  accounts: connectedAccounts,
1158
1220
  currentWallet: wallet,
1159
1221
  currentAccount: selectedAccount,
1160
1222
  lastConnectedWalletName: wallet.name,
1161
- lastConnectedAccountAddress: selectedAccount?.address
1223
+ lastConnectedAccountAddress: selectedAccount?.address,
1224
+ connectionStatus: "connected"
1162
1225
  }));
1163
1226
  },
1164
1227
  setWalletDisconnected() {
@@ -1167,7 +1230,8 @@ function createWalletStore({ wallets, storage, storageKey }) {
1167
1230
  currentWallet: null,
1168
1231
  currentAccount: null,
1169
1232
  lastConnectedWalletName: null,
1170
- lastConnectedAccountAddress: null
1233
+ lastConnectedAccountAddress: null,
1234
+ connectionStatus: "disconnected"
1171
1235
  }));
1172
1236
  },
1173
1237
  setAccountSwitched(selectedAccount) {
@@ -1187,7 +1251,8 @@ function createWalletStore({ wallets, storage, storageKey }) {
1187
1251
  currentWallet: null,
1188
1252
  currentAccount: null,
1189
1253
  lastConnectedWalletName: null,
1190
- lastConnectedAccountAddress: null
1254
+ lastConnectedAccountAddress: null,
1255
+ connectionStatus: "disconnected"
1191
1256
  }));
1192
1257
  } else {
1193
1258
  set(() => ({ wallets: updatedWallets }));
@@ -1328,7 +1393,8 @@ function WalletProvider({
1328
1393
  createWalletStore({
1329
1394
  wallets: getRegisteredWallets(preferredWallets, requiredFeatures),
1330
1395
  storageKey,
1331
- storage
1396
+ storage,
1397
+ autoConnect
1332
1398
  })
1333
1399
  );
1334
1400
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(WalletContext.Provider, { value: storeRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
@@ -1386,18 +1452,22 @@ function createNetworkConfig(networkConfig) {
1386
1452
 
1387
1453
  // src/hooks/useSuiClientInfiniteQuery.ts
1388
1454
  var import_react_query5 = require("@tanstack/react-query");
1389
- function useSuiClientInfiniteQuery(method, params, { queryKey = [], enabled = !!params, ...options } = {}) {
1455
+ function useSuiClientInfiniteQuery(method, params, {
1456
+ queryKey = [],
1457
+ enabled = !!params,
1458
+ ...options
1459
+ } = {}) {
1390
1460
  const suiContext = useSuiClientContext();
1391
1461
  return (0, import_react_query5.useInfiniteQuery)({
1392
1462
  ...options,
1463
+ initialPageParam: null,
1393
1464
  queryKey: [suiContext.network, method, params, ...queryKey],
1394
1465
  enabled,
1395
- queryFn: async () => {
1396
- return await suiContext.client[method](params);
1397
- },
1398
- getNextPageParam: (lastPage) => {
1399
- return lastPage.nextCursor ?? null;
1400
- }
1466
+ queryFn: ({ pageParam }) => suiContext.client[method]({
1467
+ ...params ?? {},
1468
+ cursor: pageParam
1469
+ }),
1470
+ getNextPageParam: ({ nextCursor }) => nextCursor ?? null
1401
1471
  });
1402
1472
  }
1403
1473
 
@@ -1413,6 +1483,11 @@ function useSuiClientMutation(method, options = {}) {
1413
1483
  });
1414
1484
  }
1415
1485
 
1486
+ // src/hooks/wallet/useAutoConnectionStatus.ts
1487
+ function useAutoConnectionStatus() {
1488
+ return useWalletStore((state) => state.autoConnectionStatus);
1489
+ }
1490
+
1416
1491
  // src/hooks/wallet/useSignAndExecuteTransactionBlock.ts
1417
1492
  var import_react_query7 = require("@tanstack/react-query");
1418
1493
  function useSignAndExecuteTransactionBlock({
@@ -1420,7 +1495,7 @@ function useSignAndExecuteTransactionBlock({
1420
1495
  executeFromWallet,
1421
1496
  ...mutationOptions
1422
1497
  } = {}) {
1423
- const currentWallet = useCurrentWallet();
1498
+ const { currentWallet } = useCurrentWallet();
1424
1499
  const currentAccount = useCurrentAccount();
1425
1500
  const client = useSuiClient();
1426
1501
  return (0, import_react_query7.useMutation)({
@@ -1478,7 +1553,7 @@ function useSignPersonalMessage({
1478
1553
  mutationKey,
1479
1554
  ...mutationOptions
1480
1555
  } = {}) {
1481
- const currentWallet = useCurrentWallet();
1556
+ const { currentWallet } = useCurrentWallet();
1482
1557
  const currentAccount = useCurrentAccount();
1483
1558
  return (0, import_react_query8.useMutation)({
1484
1559
  mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),
@@ -1513,7 +1588,7 @@ function useSignTransactionBlock({
1513
1588
  mutationKey,
1514
1589
  ...mutationOptions
1515
1590
  } = {}) {
1516
- const currentWallet = useCurrentWallet();
1591
+ const { currentWallet } = useCurrentWallet();
1517
1592
  const currentAccount = useCurrentAccount();
1518
1593
  return (0, import_react_query9.useMutation)({
1519
1594
  mutationKey: walletMutationKeys.signTransactionBlock(mutationKey),