@aptos-labs/wallet-adapter-react 3.2.0 → 3.3.1
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/README.md +19 -4
- package/dist/WalletProvider.d.ts +5 -1
- package/dist/WalletProvider.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -45
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/WalletProvider.tsx +4 -1
- package/src/index.tsx +0 -1
- package/dist/utils.d.ts +0 -28
- package/dist/utils.d.ts.map +0 -1
- package/src/utils.tsx +0 -61
package/README.md
CHANGED
|
@@ -66,14 +66,16 @@ Import the `AptosWalletAdapterProvider`.
|
|
|
66
66
|
import { AptosWalletAdapterProvider } from "@aptos-labs/wallet-adapter-react";
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
Wrap your app with the Provider, pass it the
|
|
69
|
+
Wrap your app with the Provider, pass it the relevant props.
|
|
70
70
|
|
|
71
71
|
```js
|
|
72
|
-
const wallets = [new
|
|
72
|
+
const wallets = [new AptosLegacyStandardWallet()];
|
|
73
73
|
|
|
74
74
|
<AptosWalletAdapterProvider
|
|
75
75
|
plugins={wallets}
|
|
76
76
|
autoConnect={true}
|
|
77
|
+
optInWallets={["Petra"]}
|
|
78
|
+
dappConfig={{ netwrok: network.MAINNET }}
|
|
77
79
|
onError={(error) => {
|
|
78
80
|
console.log("error", error);
|
|
79
81
|
}}
|
|
@@ -82,6 +84,14 @@ const wallets = [new AptosWallet()];
|
|
|
82
84
|
</AptosWalletAdapterProvider>;
|
|
83
85
|
```
|
|
84
86
|
|
|
87
|
+
#### Available Provider Props
|
|
88
|
+
|
|
89
|
+
- `plugins` - any legacy standard wallet, i.e a wallet that is not AIP-62 standard compatible, should be installed and passed in this array. [Check here](../../README.md#supported-wallet-packages) for a list of AIP-62 and legacy standard wallets.
|
|
90
|
+
- `autoConnect` - a prop indicates whether the dapp should auto connect with a previous connected wallet.
|
|
91
|
+
- `optInWallets` - the adapter detects and adds AIP-62 standard wallets by default, sometimes you might want to opt-in with specific wallets. This props lets you define the AIP-62 standard wallets you want to support in your dapp.
|
|
92
|
+
- `dappConfig` - the adapter comes built-in with AIP-62 standard SDK wallets and it needs to know what configuration your dapp is in to render the current instance.
|
|
93
|
+
- `onError` - a callback function to fire when the adapter throws an error
|
|
94
|
+
|
|
85
95
|
#### Use Wallet
|
|
86
96
|
|
|
87
97
|
On any page you want to use the wallet props, import `useWallet` from `@aptos-labs/wallet-adapter-react`
|
|
@@ -112,14 +122,19 @@ const {
|
|
|
112
122
|
### Use a UI package (recommended)
|
|
113
123
|
|
|
114
124
|
As part of the wallet adapter repo we provide a wallet connect UI package that provides a wallet connect button and a wallet select modal.
|
|
115
|
-
|
|
125
|
+
|
|
126
|
+
The available UI Packages are
|
|
127
|
+
|
|
128
|
+
- [shadcn/ui](../wallet-adapter-react/src/WalletItem.tsx)
|
|
129
|
+
- [Ant Design](<(../wallet-adapter-ant-design/)>)
|
|
130
|
+
- [MUI](../wallet-adapter-mui-design/)
|
|
116
131
|
|
|
117
132
|
#### Examples
|
|
118
133
|
|
|
119
134
|
##### Initialize Aptos
|
|
120
135
|
|
|
121
136
|
```js
|
|
122
|
-
const aptosConfig = new AptosConfig({ network: Network.
|
|
137
|
+
const aptosConfig = new AptosConfig({ network: Network.MAINNET });
|
|
123
138
|
const aptos = new Aptos(aptosConfig);
|
|
124
139
|
```
|
|
125
140
|
|
package/dist/WalletProvider.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { FC, ReactNode } from "react";
|
|
2
|
-
import type { Wallet, AvailableWallets } from "@aptos-labs/wallet-adapter-core";
|
|
2
|
+
import type { Wallet, Network, AvailableWallets } from "@aptos-labs/wallet-adapter-core";
|
|
3
3
|
export interface AptosWalletProviderProps {
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
plugins?: ReadonlyArray<Wallet>;
|
|
6
6
|
optInWallets?: ReadonlyArray<AvailableWallets>;
|
|
7
7
|
autoConnect?: boolean;
|
|
8
|
+
dappConfig?: {
|
|
9
|
+
network: Network;
|
|
10
|
+
};
|
|
8
11
|
onError?: (error: any) => void;
|
|
9
12
|
}
|
|
10
13
|
/**
|
|
@@ -13,6 +16,7 @@ export interface AptosWalletProviderProps {
|
|
|
13
16
|
* @param plugins Non AIP-62 supported wallet plugins array
|
|
14
17
|
* @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets
|
|
15
18
|
* @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet
|
|
19
|
+
* @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations
|
|
16
20
|
* @param onError A callback function to execute when there is an error in the adapter
|
|
17
21
|
*
|
|
18
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../src/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EACF,SAAS,EAKV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAIV,MAAM,
|
|
1
|
+
{"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../src/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EACF,SAAS,EAKV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAIV,MAAM,EAWN,OAAO,EAEP,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAcD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,wBAAwB,CA2PnE,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,11 +24,6 @@ __export(src_exports, {
|
|
|
24
24
|
AptosWalletAdapterProvider: () => AptosWalletAdapterProvider,
|
|
25
25
|
WalletContext: () => WalletContext,
|
|
26
26
|
WalletItem: () => WalletItem,
|
|
27
|
-
getAptosConnectWallets: () => getAptosConnectWallets,
|
|
28
|
-
isInstallRequired: () => isInstallRequired,
|
|
29
|
-
isInstalledOrLoadable: () => isInstalledOrLoadable,
|
|
30
|
-
partitionWallets: () => partitionWallets,
|
|
31
|
-
truncateAddress: () => truncateAddress,
|
|
32
27
|
useWallet: () => useWallet
|
|
33
28
|
});
|
|
34
29
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -169,12 +164,13 @@ var AptosWalletAdapterProvider = ({
|
|
|
169
164
|
plugins,
|
|
170
165
|
optInWallets,
|
|
171
166
|
autoConnect = false,
|
|
167
|
+
dappConfig,
|
|
172
168
|
onError
|
|
173
169
|
}) => {
|
|
174
170
|
const [{ connected, account, network, wallet }, setState] = (0, import_react3.useState)(initialState);
|
|
175
171
|
const [isLoading, setIsLoading] = (0, import_react3.useState)(true);
|
|
176
172
|
const walletCore = (0, import_react3.useMemo)(
|
|
177
|
-
() => new import_wallet_adapter_core2.WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : []),
|
|
173
|
+
() => new import_wallet_adapter_core2.WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : [], dappConfig),
|
|
178
174
|
[]
|
|
179
175
|
);
|
|
180
176
|
const [wallets, setWallets] = (0, import_react3.useState)(walletCore.wallets);
|
|
@@ -375,50 +371,11 @@ var AptosWalletAdapterProvider = ({
|
|
|
375
371
|
children
|
|
376
372
|
});
|
|
377
373
|
};
|
|
378
|
-
|
|
379
|
-
// src/utils.tsx
|
|
380
|
-
var import_wallet_adapter_core3 = require("@aptos-labs/wallet-adapter-core");
|
|
381
|
-
function partitionWallets(wallets, partitionFunction = isInstalledOrLoadable) {
|
|
382
|
-
const defaultWallets = [];
|
|
383
|
-
const moreWallets = [];
|
|
384
|
-
for (const wallet of wallets) {
|
|
385
|
-
if (partitionFunction(wallet))
|
|
386
|
-
defaultWallets.push(wallet);
|
|
387
|
-
else
|
|
388
|
-
moreWallets.push(wallet);
|
|
389
|
-
}
|
|
390
|
-
return { defaultWallets, moreWallets };
|
|
391
|
-
}
|
|
392
|
-
function isInstalledOrLoadable(wallet) {
|
|
393
|
-
return wallet.readyState === import_wallet_adapter_core3.WalletReadyState.Installed || wallet.readyState === import_wallet_adapter_core3.WalletReadyState.Loadable;
|
|
394
|
-
}
|
|
395
|
-
function getAptosConnectWallets(wallets) {
|
|
396
|
-
const { defaultWallets, moreWallets } = partitionWallets(
|
|
397
|
-
wallets,
|
|
398
|
-
(wallet) => wallet.url.includes("aptosconnect.app")
|
|
399
|
-
);
|
|
400
|
-
return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
|
|
401
|
-
}
|
|
402
|
-
function isInstallRequired(wallet) {
|
|
403
|
-
const isWalletReady = isInstalledOrLoadable(wallet);
|
|
404
|
-
const isMobile = !isWalletReady && (0, import_wallet_adapter_core3.isRedirectable)();
|
|
405
|
-
return !isMobile && !isWalletReady;
|
|
406
|
-
}
|
|
407
|
-
function truncateAddress(address) {
|
|
408
|
-
if (!address)
|
|
409
|
-
return;
|
|
410
|
-
return `${address.slice(0, 6)}...${address.slice(-5)}`;
|
|
411
|
-
}
|
|
412
374
|
// Annotate the CommonJS export names for ESM import in node:
|
|
413
375
|
0 && (module.exports = {
|
|
414
376
|
AptosWalletAdapterProvider,
|
|
415
377
|
WalletContext,
|
|
416
378
|
WalletItem,
|
|
417
|
-
getAptosConnectWallets,
|
|
418
|
-
isInstallRequired,
|
|
419
|
-
isInstalledOrLoadable,
|
|
420
|
-
partitionWallets,
|
|
421
|
-
truncateAddress,
|
|
422
379
|
useWallet
|
|
423
380
|
});
|
|
424
381
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx","../src/utils.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\nexport * from \"./utils\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? []),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\n\n/**\n * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.\n * By default, the wallets will be partitioned by whether or not they are installed or loadable.\n * You can pass your own partition function if you wish to customize this behavior.\n */\nexport function partitionWallets(\n wallets: ReadonlyArray<AnyAptosWallet>,\n partitionFunction: (wallet: AnyAptosWallet) => boolean = isInstalledOrLoadable\n) {\n const defaultWallets: Array<AnyAptosWallet> = [];\n const moreWallets: Array<AnyAptosWallet> = [];\n\n for (const wallet of wallets) {\n if (partitionFunction(wallet)) defaultWallets.push(wallet);\n else moreWallets.push(wallet);\n }\n\n return { defaultWallets, moreWallets };\n}\n\n/** Returns true if the wallet is installed or loadable. */\nexport function isInstalledOrLoadable(wallet: AnyAptosWallet) {\n return (\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable\n );\n}\n\n/**\n * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.\n * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.\n */\nexport function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>) {\n const { defaultWallets, moreWallets } = partitionWallets(wallets, (wallet) =>\n wallet.url.includes(\"aptosconnect.app\")\n );\n return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };\n}\n\n/**\n * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.\n * This can be used to decide whether to show a \"Connect\" button or \"Install\" link in the UI.\n */\nexport function isInstallRequired(wallet: AnyAptosWallet) {\n const isWalletReady = isInstalledOrLoadable(wallet);\n const isMobile = !isWalletReady && isRedirectable();\n\n return !isMobile && !isWalletReady;\n}\n\n/** Truncates the provided wallet address at the middle with an ellipsis. */\nexport function truncateAddress(address: string | undefined) {\n if (!address) return;\n return `${address.slice(0, 6)}...${address.slice(-5)}`;\n}\n"],"mappings":"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","names":["import_react","import_react","import_wallet_adapter_core","network","wallet","wallets","import_wallet_adapter_core"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n dappConfig?: { network: Network };\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n dappConfig,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? [], dappConfig),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n"],"mappings":"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","names":["import_react","import_react","import_wallet_adapter_core","network","wallet","wallets"]}
|
package/dist/index.mjs
CHANGED
|
@@ -149,12 +149,13 @@ var AptosWalletAdapterProvider = ({
|
|
|
149
149
|
plugins,
|
|
150
150
|
optInWallets,
|
|
151
151
|
autoConnect = false,
|
|
152
|
+
dappConfig,
|
|
152
153
|
onError
|
|
153
154
|
}) => {
|
|
154
155
|
const [{ connected, account, network, wallet }, setState] = useState(initialState);
|
|
155
156
|
const [isLoading, setIsLoading] = useState(true);
|
|
156
157
|
const walletCore = useMemo(
|
|
157
|
-
() => new WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : []),
|
|
158
|
+
() => new WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : [], dappConfig),
|
|
158
159
|
[]
|
|
159
160
|
);
|
|
160
161
|
const [wallets, setWallets] = useState(walletCore.wallets);
|
|
@@ -355,52 +356,10 @@ var AptosWalletAdapterProvider = ({
|
|
|
355
356
|
children
|
|
356
357
|
});
|
|
357
358
|
};
|
|
358
|
-
|
|
359
|
-
// src/utils.tsx
|
|
360
|
-
import {
|
|
361
|
-
WalletReadyState as WalletReadyState2,
|
|
362
|
-
isRedirectable as isRedirectable2
|
|
363
|
-
} from "@aptos-labs/wallet-adapter-core";
|
|
364
|
-
function partitionWallets(wallets, partitionFunction = isInstalledOrLoadable) {
|
|
365
|
-
const defaultWallets = [];
|
|
366
|
-
const moreWallets = [];
|
|
367
|
-
for (const wallet of wallets) {
|
|
368
|
-
if (partitionFunction(wallet))
|
|
369
|
-
defaultWallets.push(wallet);
|
|
370
|
-
else
|
|
371
|
-
moreWallets.push(wallet);
|
|
372
|
-
}
|
|
373
|
-
return { defaultWallets, moreWallets };
|
|
374
|
-
}
|
|
375
|
-
function isInstalledOrLoadable(wallet) {
|
|
376
|
-
return wallet.readyState === WalletReadyState2.Installed || wallet.readyState === WalletReadyState2.Loadable;
|
|
377
|
-
}
|
|
378
|
-
function getAptosConnectWallets(wallets) {
|
|
379
|
-
const { defaultWallets, moreWallets } = partitionWallets(
|
|
380
|
-
wallets,
|
|
381
|
-
(wallet) => wallet.url.includes("aptosconnect.app")
|
|
382
|
-
);
|
|
383
|
-
return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
|
|
384
|
-
}
|
|
385
|
-
function isInstallRequired(wallet) {
|
|
386
|
-
const isWalletReady = isInstalledOrLoadable(wallet);
|
|
387
|
-
const isMobile = !isWalletReady && isRedirectable2();
|
|
388
|
-
return !isMobile && !isWalletReady;
|
|
389
|
-
}
|
|
390
|
-
function truncateAddress(address) {
|
|
391
|
-
if (!address)
|
|
392
|
-
return;
|
|
393
|
-
return `${address.slice(0, 6)}...${address.slice(-5)}`;
|
|
394
|
-
}
|
|
395
359
|
export {
|
|
396
360
|
AptosWalletAdapterProvider,
|
|
397
361
|
WalletContext,
|
|
398
362
|
WalletItem,
|
|
399
|
-
getAptosConnectWallets,
|
|
400
|
-
isInstallRequired,
|
|
401
|
-
isInstalledOrLoadable,
|
|
402
|
-
partitionWallets,
|
|
403
|
-
truncateAddress,
|
|
404
363
|
useWallet
|
|
405
364
|
};
|
|
406
365
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx","../src/utils.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\nexport * from \"./utils\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? []),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\n\n/**\n * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.\n * By default, the wallets will be partitioned by whether or not they are installed or loadable.\n * You can pass your own partition function if you wish to customize this behavior.\n */\nexport function partitionWallets(\n wallets: ReadonlyArray<AnyAptosWallet>,\n partitionFunction: (wallet: AnyAptosWallet) => boolean = isInstalledOrLoadable\n) {\n const defaultWallets: Array<AnyAptosWallet> = [];\n const moreWallets: Array<AnyAptosWallet> = [];\n\n for (const wallet of wallets) {\n if (partitionFunction(wallet)) defaultWallets.push(wallet);\n else moreWallets.push(wallet);\n }\n\n return { defaultWallets, moreWallets };\n}\n\n/** Returns true if the wallet is installed or loadable. */\nexport function isInstalledOrLoadable(wallet: AnyAptosWallet) {\n return (\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable\n );\n}\n\n/**\n * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.\n * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.\n */\nexport function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>) {\n const { defaultWallets, moreWallets } = partitionWallets(wallets, (wallet) =>\n wallet.url.includes(\"aptosconnect.app\")\n );\n return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };\n}\n\n/**\n * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.\n * This can be used to decide whether to show a \"Connect\" button or \"Install\" link in the UI.\n */\nexport function isInstallRequired(wallet: AnyAptosWallet) {\n const isWalletReady = isInstalledOrLoadable(wallet);\n const isMobile = !isWalletReady && isRedirectable();\n\n return !isMobile && !isWalletReady;\n}\n\n/** Truncates the provided wallet address at the middle with an ellipsis. */\nexport function truncateAddress(address: string | undefined) {\n if (!address) return;\n return `${address.slice(0, 6)}...${address.slice(-5)}`;\n}\n"],"mappings":"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","names":["createContext","useContext","createContext","useContext","useCallback","jsx","network","useCallback","wallet","wallets","WalletReadyState","isRedirectable"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n dappConfig?: { network: Network };\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n dappConfig,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? [], dappConfig),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n"],"mappings":"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","names":["createContext","useContext","createContext","useContext","useCallback","jsx","network","useCallback","wallet","wallets"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aptos-labs/wallet-adapter-react",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"description": "Aptos Wallet Adapter React Provider",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@radix-ui/react-slot": "^1.0.2",
|
|
41
|
-
"@aptos-labs/wallet-adapter-core": "4.
|
|
41
|
+
"@aptos-labs/wallet-adapter-core": "4.8.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"react": "^18"
|
package/src/WalletProvider.tsx
CHANGED
|
@@ -33,6 +33,7 @@ export interface AptosWalletProviderProps {
|
|
|
33
33
|
plugins?: ReadonlyArray<Wallet>;
|
|
34
34
|
optInWallets?: ReadonlyArray<AvailableWallets>;
|
|
35
35
|
autoConnect?: boolean;
|
|
36
|
+
dappConfig?: { network: Network };
|
|
36
37
|
onError?: (error: any) => void;
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -54,6 +55,7 @@ const initialState: {
|
|
|
54
55
|
* @param plugins Non AIP-62 supported wallet plugins array
|
|
55
56
|
* @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets
|
|
56
57
|
* @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet
|
|
58
|
+
* @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations
|
|
57
59
|
* @param onError A callback function to execute when there is an error in the adapter
|
|
58
60
|
*
|
|
59
61
|
*/
|
|
@@ -62,6 +64,7 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
|
|
|
62
64
|
plugins,
|
|
63
65
|
optInWallets,
|
|
64
66
|
autoConnect = false,
|
|
67
|
+
dappConfig,
|
|
65
68
|
onError,
|
|
66
69
|
}: AptosWalletProviderProps) => {
|
|
67
70
|
const [{ connected, account, network, wallet }, setState] =
|
|
@@ -72,7 +75,7 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
|
|
|
72
75
|
const [isLoading, setIsLoading] = useState<boolean>(true);
|
|
73
76
|
|
|
74
77
|
const walletCore = useMemo(
|
|
75
|
-
() => new WalletCore(plugins ?? [], optInWallets ?? []),
|
|
78
|
+
() => new WalletCore(plugins ?? [], optInWallets ?? [], dappConfig),
|
|
76
79
|
[]
|
|
77
80
|
);
|
|
78
81
|
const [wallets, setWallets] = useState<
|
package/src/index.tsx
CHANGED
package/dist/utils.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { AnyAptosWallet } from "@aptos-labs/wallet-adapter-core";
|
|
2
|
-
/**
|
|
3
|
-
* A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.
|
|
4
|
-
* By default, the wallets will be partitioned by whether or not they are installed or loadable.
|
|
5
|
-
* You can pass your own partition function if you wish to customize this behavior.
|
|
6
|
-
*/
|
|
7
|
-
export declare function partitionWallets(wallets: ReadonlyArray<AnyAptosWallet>, partitionFunction?: (wallet: AnyAptosWallet) => boolean): {
|
|
8
|
-
defaultWallets: AnyAptosWallet[];
|
|
9
|
-
moreWallets: AnyAptosWallet[];
|
|
10
|
-
};
|
|
11
|
-
/** Returns true if the wallet is installed or loadable. */
|
|
12
|
-
export declare function isInstalledOrLoadable(wallet: AnyAptosWallet): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.
|
|
15
|
-
* Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.
|
|
16
|
-
*/
|
|
17
|
-
export declare function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>): {
|
|
18
|
-
aptosConnectWallets: AnyAptosWallet[];
|
|
19
|
-
otherWallets: AnyAptosWallet[];
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.
|
|
23
|
-
* This can be used to decide whether to show a "Connect" button or "Install" link in the UI.
|
|
24
|
-
*/
|
|
25
|
-
export declare function isInstallRequired(wallet: AnyAptosWallet): boolean;
|
|
26
|
-
/** Truncates the provided wallet address at the middle with an ellipsis. */
|
|
27
|
-
export declare function truncateAddress(address: string | undefined): string | undefined;
|
|
28
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAGf,MAAM,iCAAiC,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,EACtC,iBAAiB,GAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAA+B;;;EAW/E;AAED,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,WAK3D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC;;;EAK5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,WAKvD;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,sBAG1D"}
|
package/src/utils.tsx
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AnyAptosWallet,
|
|
3
|
-
WalletReadyState,
|
|
4
|
-
isRedirectable,
|
|
5
|
-
} from "@aptos-labs/wallet-adapter-core";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.
|
|
9
|
-
* By default, the wallets will be partitioned by whether or not they are installed or loadable.
|
|
10
|
-
* You can pass your own partition function if you wish to customize this behavior.
|
|
11
|
-
*/
|
|
12
|
-
export function partitionWallets(
|
|
13
|
-
wallets: ReadonlyArray<AnyAptosWallet>,
|
|
14
|
-
partitionFunction: (wallet: AnyAptosWallet) => boolean = isInstalledOrLoadable
|
|
15
|
-
) {
|
|
16
|
-
const defaultWallets: Array<AnyAptosWallet> = [];
|
|
17
|
-
const moreWallets: Array<AnyAptosWallet> = [];
|
|
18
|
-
|
|
19
|
-
for (const wallet of wallets) {
|
|
20
|
-
if (partitionFunction(wallet)) defaultWallets.push(wallet);
|
|
21
|
-
else moreWallets.push(wallet);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return { defaultWallets, moreWallets };
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/** Returns true if the wallet is installed or loadable. */
|
|
28
|
-
export function isInstalledOrLoadable(wallet: AnyAptosWallet) {
|
|
29
|
-
return (
|
|
30
|
-
wallet.readyState === WalletReadyState.Installed ||
|
|
31
|
-
wallet.readyState === WalletReadyState.Loadable
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.
|
|
37
|
-
* Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.
|
|
38
|
-
*/
|
|
39
|
-
export function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>) {
|
|
40
|
-
const { defaultWallets, moreWallets } = partitionWallets(wallets, (wallet) =>
|
|
41
|
-
wallet.url.includes("aptosconnect.app")
|
|
42
|
-
);
|
|
43
|
-
return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.
|
|
48
|
-
* This can be used to decide whether to show a "Connect" button or "Install" link in the UI.
|
|
49
|
-
*/
|
|
50
|
-
export function isInstallRequired(wallet: AnyAptosWallet) {
|
|
51
|
-
const isWalletReady = isInstalledOrLoadable(wallet);
|
|
52
|
-
const isMobile = !isWalletReady && isRedirectable();
|
|
53
|
-
|
|
54
|
-
return !isMobile && !isWalletReady;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/** Truncates the provided wallet address at the middle with an ellipsis. */
|
|
58
|
-
export function truncateAddress(address: string | undefined) {
|
|
59
|
-
if (!address) return;
|
|
60
|
-
return `${address.slice(0, 6)}...${address.slice(-5)}`;
|
|
61
|
-
}
|