@mysten/dapp-kit 0.14.53 → 0.15.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 (55) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/components/ConnectButton.d.ts +4 -1
  3. package/dist/cjs/components/ConnectButton.js +49 -8
  4. package/dist/cjs/components/ConnectButton.js.map +3 -3
  5. package/dist/cjs/components/WalletProvider.js +1 -1
  6. package/dist/cjs/components/WalletProvider.js.map +1 -1
  7. package/dist/cjs/components/connect-modal/ConnectModal.d.ts +4 -1
  8. package/dist/cjs/components/connect-modal/ConnectModal.js +47 -8
  9. package/dist/cjs/components/connect-modal/ConnectModal.js.map +3 -3
  10. package/dist/cjs/components/connect-modal/wallet-list/WalletList.d.ts +2 -1
  11. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +8 -28
  12. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +4 -4
  13. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +3 -6
  14. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +2 -2
  15. package/dist/cjs/hooks/wallet/useSignPersonalMessage.d.ts +1 -1
  16. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +30 -5
  17. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +4 -4
  18. package/dist/cjs/hooks/wallet/useSignTransaction.js +4 -6
  19. package/dist/cjs/hooks/wallet/useSignTransaction.js.map +2 -2
  20. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +1 -1
  21. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +1 -1
  22. package/dist/cjs/index.js +63 -46
  23. package/dist/cjs/index.js.map +3 -3
  24. package/dist/esm/components/ConnectButton.d.ts +4 -1
  25. package/dist/esm/components/ConnectButton.js +49 -8
  26. package/dist/esm/components/ConnectButton.js.map +3 -3
  27. package/dist/esm/components/WalletProvider.js +1 -1
  28. package/dist/esm/components/WalletProvider.js.map +1 -1
  29. package/dist/esm/components/connect-modal/ConnectModal.d.ts +4 -1
  30. package/dist/esm/components/connect-modal/ConnectModal.js +47 -8
  31. package/dist/esm/components/connect-modal/ConnectModal.js.map +3 -3
  32. package/dist/esm/components/connect-modal/wallet-list/WalletList.d.ts +2 -1
  33. package/dist/esm/components/connect-modal/wallet-list/WalletList.js +6 -26
  34. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +3 -3
  35. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +3 -6
  36. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +2 -2
  37. package/dist/esm/hooks/wallet/useSignPersonalMessage.d.ts +1 -1
  38. package/dist/esm/hooks/wallet/useSignPersonalMessage.js +30 -5
  39. package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +4 -4
  40. package/dist/esm/hooks/wallet/useSignTransaction.js +4 -6
  41. package/dist/esm/hooks/wallet/useSignTransaction.js.map +2 -2
  42. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +1 -1
  43. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +1 -1
  44. package/dist/esm/index.js +63 -46
  45. package/dist/esm/index.js.map +3 -3
  46. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +4 -4
  49. package/src/components/ConnectButton.tsx +5 -0
  50. package/src/components/connect-modal/ConnectModal.tsx +15 -1
  51. package/src/components/connect-modal/wallet-list/WalletList.tsx +7 -3
  52. package/src/hooks/wallet/useSignAndExecuteTransaction.ts +4 -4
  53. package/src/hooks/wallet/useSignPersonalMessage.ts +4 -1
  54. package/src/hooks/wallet/useSignTransaction.ts +5 -4
  55. package/src/hooks/wallet/useUnsafeBurnerWallet.ts +1 -1
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Mysten Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';
4
5
  import type { ButtonHTMLAttributes, ReactNode } from 'react';
5
6
 
6
7
  import { useCurrentAccount } from '../hooks/wallet/useCurrentAccount.js';
@@ -11,10 +12,13 @@ import { Button } from './ui/Button.js';
11
12
 
12
13
  type ConnectButtonProps = {
13
14
  connectText?: ReactNode;
15
+ /** Filter the wallets shown in the connect modal */
16
+ walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean;
14
17
  } & ButtonHTMLAttributes<HTMLButtonElement>;
15
18
 
16
19
  export function ConnectButton({
17
20
  connectText = 'Connect Wallet',
21
+ walletFilter,
18
22
  ...buttonProps
19
23
  }: ConnectButtonProps) {
20
24
  const currentAccount = useCurrentAccount();
@@ -22,6 +26,7 @@ export function ConnectButton({
22
26
  <AccountDropdownMenu currentAccount={currentAccount} />
23
27
  ) : (
24
28
  <ConnectModal
29
+ walletFilter={walletFilter}
25
30
  trigger={
26
31
  <StyleMarker>
27
32
  <Button {...buttonProps}>{connectText}</Button>
@@ -7,7 +7,9 @@ import clsx from 'clsx';
7
7
  import { useState } from 'react';
8
8
  import type { ReactNode } from 'react';
9
9
 
10
+ import { DEFAULT_WALLET_FILTER } from '../../constants/walletDefaults.js';
10
11
  import { useConnectWallet } from '../../hooks/wallet/useConnectWallet.js';
12
+ import { useWallets } from '../../hooks/wallet/useWallets.js';
11
13
  import { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';
12
14
  import { BackIcon } from '../icons/BackIcon.js';
13
15
  import { CloseIcon } from '../icons/CloseIcon.js';
@@ -44,12 +46,23 @@ type UncontrolledModalProps = {
44
46
  type ConnectModalProps = {
45
47
  /** The trigger button that opens the dialog. */
46
48
  trigger: NonNullable<ReactNode>;
49
+
50
+ /** Filter the wallets shown in the modal. */
51
+ walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean;
47
52
  } & (ControlledModalProps | UncontrolledModalProps);
48
53
 
49
- export function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: ConnectModalProps) {
54
+ export function ConnectModal({
55
+ trigger,
56
+ open,
57
+ defaultOpen,
58
+ onOpenChange,
59
+ walletFilter = DEFAULT_WALLET_FILTER,
60
+ }: ConnectModalProps) {
50
61
  const [isModalOpen, setModalOpen] = useState(open ?? defaultOpen);
51
62
  const [currentView, setCurrentView] = useState<ConnectModalView>();
52
63
  const [selectedWallet, setSelectedWallet] = useState<WalletWithRequiredFeatures>();
64
+
65
+ const wallets = useWallets().filter(walletFilter);
53
66
  const { mutate, isError } = useConnectWallet();
54
67
 
55
68
  const resetSelection = () => {
@@ -113,6 +126,7 @@ export function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: Conne
113
126
  <Heading as="h2">Connect a Wallet</Heading>
114
127
  </Dialog.Title>
115
128
  <WalletList
129
+ wallets={wallets}
116
130
  selectedWalletName={getWalletUniqueIdentifier(selectedWallet)}
117
131
  onPlaceholderClick={() => setCurrentView('getting-started')}
118
132
  onSelect={(wallet) => {
@@ -3,7 +3,6 @@
3
3
 
4
4
  import type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';
5
5
 
6
- import { useWallets } from '../../../hooks/wallet/useWallets.js';
7
6
  import { getWalletUniqueIdentifier } from '../../../utils/walletUtils.js';
8
7
  import { SuiIcon } from '../../icons/SuiIcon.js';
9
8
  import * as styles from './WalletList.css.js';
@@ -13,10 +12,15 @@ type WalletListProps = {
13
12
  selectedWalletName?: string;
14
13
  onPlaceholderClick: () => void;
15
14
  onSelect: (wallet: WalletWithRequiredFeatures) => void;
15
+ wallets: WalletWithRequiredFeatures[];
16
16
  };
17
17
 
18
- export function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }: WalletListProps) {
19
- const wallets = useWallets();
18
+ export function WalletList({
19
+ selectedWalletName,
20
+ onPlaceholderClick,
21
+ onSelect,
22
+ wallets,
23
+ }: WalletListProps) {
20
24
  return (
21
25
  <ul className={styles.container}>
22
26
  {wallets.length > 0 ? (
@@ -18,7 +18,7 @@ import {
18
18
  WalletNotConnectedError,
19
19
  } from '../../errors/walletErrors.js';
20
20
  import type { PartialBy } from '../../types/utilityTypes.js';
21
- import { useSuiClient } from '../useSuiClient.js';
21
+ import { useSuiClientContext } from '../useSuiClient.js';
22
22
  import { useCurrentAccount } from './useCurrentAccount.js';
23
23
  import { useCurrentWallet } from './useCurrentWallet.js';
24
24
  import { useReportTransactionEffects } from './useReportTransactionEffects.js';
@@ -77,7 +77,7 @@ export function useSignAndExecuteTransaction<
77
77
  > {
78
78
  const { currentWallet, supportedIntents } = useCurrentWallet();
79
79
  const currentAccount = useCurrentAccount();
80
- const client = useSuiClient();
80
+ const { client, network } = useSuiClientContext();
81
81
  const { mutate: reportTransactionEffects } = useReportTransactionEffects();
82
82
 
83
83
  const executeTransaction: ({
@@ -119,7 +119,6 @@ export function useSignAndExecuteTransaction<
119
119
  'No wallet account is selected to sign the transaction with.',
120
120
  );
121
121
  }
122
- const chain = signTransactionArgs.chain ?? signerAccount?.chains[0];
123
122
 
124
123
  if (
125
124
  !currentWallet.features['sui:signTransaction'] &&
@@ -130,6 +129,7 @@ export function useSignAndExecuteTransaction<
130
129
  );
131
130
  }
132
131
 
132
+ const chain = signTransactionArgs.chain ?? `sui:${network}`;
133
133
  const { signature, bytes } = await signTransaction(currentWallet, {
134
134
  ...signTransactionArgs,
135
135
  transaction: {
@@ -143,7 +143,7 @@ export function useSignAndExecuteTransaction<
143
143
  },
144
144
  },
145
145
  account: signerAccount,
146
- chain: signTransactionArgs.chain ?? signerAccount.chains[0],
146
+ chain,
147
147
  });
148
148
 
149
149
  const result = await executeTransaction({ bytes, signature });
@@ -15,10 +15,11 @@ import {
15
15
  } from '../..//errors/walletErrors.js';
16
16
  import { walletMutationKeys } from '../../constants/walletMutationKeys.js';
17
17
  import type { PartialBy } from '../../types/utilityTypes.js';
18
+ import { useSuiClientContext } from '../useSuiClient.js';
18
19
  import { useCurrentAccount } from './useCurrentAccount.js';
19
20
  import { useCurrentWallet } from './useCurrentWallet.js';
20
21
 
21
- type UseSignPersonalMessageArgs = PartialBy<SuiSignPersonalMessageInput, 'account'>;
22
+ type UseSignPersonalMessageArgs = PartialBy<SuiSignPersonalMessageInput, 'account' | 'chain'>;
22
23
 
23
24
  type UseSignPersonalMessageResult = SuiSignPersonalMessageOutput;
24
25
 
@@ -51,6 +52,7 @@ export function useSignPersonalMessage({
51
52
  > {
52
53
  const { currentWallet } = useCurrentWallet();
53
54
  const currentAccount = useCurrentAccount();
55
+ const { network } = useSuiClientContext();
54
56
 
55
57
  return useMutation({
56
58
  mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),
@@ -71,6 +73,7 @@ export function useSignPersonalMessage({
71
73
  return await signPersonalMessageFeature.signPersonalMessage({
72
74
  ...signPersonalMessageArgs,
73
75
  account: signerAccount,
76
+ chain: signPersonalMessageArgs.chain ?? `sui:${network}`,
74
77
  });
75
78
  }
76
79
 
@@ -14,7 +14,7 @@ import {
14
14
  WalletNotConnectedError,
15
15
  } from '../../errors/walletErrors.js';
16
16
  import type { PartialBy } from '../../types/utilityTypes.js';
17
- import { useSuiClient } from '../useSuiClient.js';
17
+ import { useSuiClientContext } from '../useSuiClient.js';
18
18
  import { useCurrentAccount } from './useCurrentAccount.js';
19
19
  import { useCurrentWallet } from './useCurrentWallet.js';
20
20
  import { useReportTransactionEffects } from './useReportTransactionEffects.js';
@@ -59,7 +59,7 @@ export function useSignTransaction({
59
59
  > {
60
60
  const { currentWallet } = useCurrentWallet();
61
61
  const currentAccount = useCurrentAccount();
62
- const client = useSuiClient();
62
+ const { client, network } = useSuiClientContext();
63
63
 
64
64
  const { mutate: reportTransactionEffects } = useReportTransactionEffects();
65
65
 
@@ -86,6 +86,7 @@ export function useSignTransaction({
86
86
  );
87
87
  }
88
88
 
89
+ const chain = signTransactionArgs.chain ?? `sui:${network}`;
89
90
  const { bytes, signature } = await signTransaction(currentWallet, {
90
91
  ...signTransactionArgs,
91
92
  transaction: {
@@ -99,7 +100,7 @@ export function useSignTransaction({
99
100
  },
100
101
  },
101
102
  account: signerAccount,
102
- chain: signTransactionArgs.chain ?? signerAccount.chains[0],
103
+ chain,
103
104
  });
104
105
 
105
106
  return {
@@ -109,7 +110,7 @@ export function useSignTransaction({
109
110
  reportTransactionEffects({
110
111
  effects,
111
112
  account: signerAccount,
112
- chain: signTransactionArgs.chain ?? signerAccount.chains[0],
113
+ chain,
113
114
  });
114
115
  },
115
116
  };
@@ -98,7 +98,7 @@ function registerUnsafeBurnerWallet(suiClient: SuiClient) {
98
98
  on: this.#on,
99
99
  },
100
100
  'sui:signPersonalMessage': {
101
- version: '1.0.0',
101
+ version: '1.1.0',
102
102
  signPersonalMessage: this.#signPersonalMessage,
103
103
  },
104
104
  'sui:signTransactionBlock': {