@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.
- package/CHANGELOG.md +22 -0
- package/README.md +4 -4
- package/dist/cjs/components/AccountDropdownMenu.js +34 -6
- package/dist/cjs/components/AccountDropdownMenu.js.map +2 -2
- package/dist/cjs/components/ConnectButton.js +49 -14
- package/dist/cjs/components/ConnectButton.js.map +3 -3
- package/dist/cjs/components/WalletProvider.js +91 -28
- package/dist/cjs/components/WalletProvider.js.map +3 -3
- package/dist/cjs/components/connect-modal/ConnectModal.js +15 -8
- package/dist/cjs/components/connect-modal/ConnectModal.js.map +2 -2
- package/dist/cjs/hooks/useResolveSuiNSNames.d.ts +1 -105
- package/dist/cjs/hooks/useResolveSuiNSNames.js +3 -3
- package/dist/cjs/hooks/useResolveSuiNSNames.js.map +2 -2
- package/dist/cjs/hooks/useSuiClientInfiniteQuery.d.ts +7 -8
- package/dist/cjs/hooks/useSuiClientInfiniteQuery.js +11 -7
- package/dist/cjs/hooks/useSuiClientInfiniteQuery.js.map +2 -2
- package/dist/cjs/hooks/useSuiClientMutation.d.ts +1 -1
- package/dist/cjs/hooks/useSuiClientQuery.d.ts +3 -2
- package/dist/cjs/hooks/useSuiClientQuery.js.map +2 -2
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +65 -15
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +3 -3
- package/dist/cjs/hooks/wallet/useAutoConnectionStatus.d.ts +4 -0
- package/dist/cjs/hooks/wallet/useAutoConnectionStatus.js +50 -0
- package/dist/cjs/hooks/wallet/useAutoConnectionStatus.js.map +7 -0
- package/dist/cjs/hooks/wallet/useConnectWallet.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useConnectWallet.js +15 -8
- package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +19 -1
- package/dist/cjs/hooks/wallet/useCurrentWallet.js +29 -1
- package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useDisconnectWallet.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js +30 -2
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js +30 -2
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +2 -2
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +30 -2
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
- package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useSignTransactionBlock.js +30 -2
- package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +2 -2
- package/dist/cjs/hooks/wallet/useSwitchAccount.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useSwitchAccount.js +30 -2
- package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +30 -2
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +112 -37
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/walletStore.d.ts +10 -2
- package/dist/cjs/walletStore.js +23 -4
- package/dist/cjs/walletStore.js.map +2 -2
- package/dist/esm/components/AccountDropdownMenu.js +34 -6
- package/dist/esm/components/AccountDropdownMenu.js.map +2 -2
- package/dist/esm/components/ConnectButton.js +49 -14
- package/dist/esm/components/ConnectButton.js.map +3 -3
- package/dist/esm/components/WalletProvider.js +91 -28
- package/dist/esm/components/WalletProvider.js.map +3 -3
- package/dist/esm/components/connect-modal/ConnectModal.js +15 -8
- package/dist/esm/components/connect-modal/ConnectModal.js.map +2 -2
- package/dist/esm/hooks/useResolveSuiNSNames.d.ts +1 -105
- package/dist/esm/hooks/useResolveSuiNSNames.js +3 -3
- package/dist/esm/hooks/useResolveSuiNSNames.js.map +2 -2
- package/dist/esm/hooks/useSuiClientInfiniteQuery.d.ts +7 -8
- package/dist/esm/hooks/useSuiClientInfiniteQuery.js +11 -7
- package/dist/esm/hooks/useSuiClientInfiniteQuery.js.map +2 -2
- package/dist/esm/hooks/useSuiClientMutation.d.ts +1 -1
- package/dist/esm/hooks/useSuiClientQuery.d.ts +3 -2
- package/dist/esm/hooks/useSuiClientQuery.js.map +2 -2
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js +65 -15
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +3 -3
- package/dist/esm/hooks/wallet/useAutoConnectionStatus.d.ts +4 -0
- package/dist/esm/hooks/wallet/useAutoConnectionStatus.js +27 -0
- package/dist/esm/hooks/wallet/useAutoConnectionStatus.js.map +7 -0
- package/dist/esm/hooks/wallet/useConnectWallet.d.ts +1 -1
- package/dist/esm/hooks/wallet/useConnectWallet.js +15 -8
- package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +19 -1
- package/dist/esm/hooks/wallet/useCurrentWallet.js +29 -1
- package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useDisconnectWallet.d.ts +1 -1
- package/dist/esm/hooks/wallet/useDisconnectWallet.js +30 -2
- package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +1 -1
- package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js +30 -2
- package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +2 -2
- package/dist/esm/hooks/wallet/useSignPersonalMessage.d.ts +1 -1
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js +30 -2
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
- package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +1 -1
- package/dist/esm/hooks/wallet/useSignTransactionBlock.js +30 -2
- package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +2 -2
- package/dist/esm/hooks/wallet/useSwitchAccount.d.ts +1 -1
- package/dist/esm/hooks/wallet/useSwitchAccount.js +30 -2
- package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +30 -2
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +112 -37
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/walletStore.d.ts +10 -2
- package/dist/esm/walletStore.js +23 -4
- package/dist/esm/walletStore.js.map +2 -2
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/components/WalletProvider.tsx +1 -0
- package/src/hooks/useResolveSuiNSNames.ts +5 -6
- package/src/hooks/useSuiClientInfiniteQuery.ts +38 -24
- package/src/hooks/useSuiClientQuery.ts +11 -7
- package/src/hooks/wallet/useAutoConnectWallet.ts +24 -7
- package/src/hooks/wallet/useAutoConnectionStatus.ts +12 -0
- package/src/hooks/wallet/useConnectWallet.ts +17 -8
- package/src/hooks/wallet/useCurrentWallet.ts +30 -1
- package/src/hooks/wallet/useDisconnectWallet.ts +1 -1
- package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +1 -1
- package/src/hooks/wallet/useSignPersonalMessage.ts +1 -1
- package/src/hooks/wallet/useSignTransactionBlock.ts +1 -1
- package/src/hooks/wallet/useSwitchAccount.ts +1 -1
- package/src/hooks/wallet/useWalletPropertiesChanged.ts +1 -1
- package/src/index.ts +1 -0
- 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
|
-
|
|
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\
|
|
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,
|
|
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
|
-
|
|
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\
|
|
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,
|
|
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
|
}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -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, ...
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
893
|
-
|
|
894
|
-
|
|
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({
|
|
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, {
|
|
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:
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
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),
|