@aptos-labs/wallet-adapter-react 3.1.1 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WalletProvider.d.ts +5 -1
- package/dist/WalletProvider.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -1
- package/dist/index.mjs.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/WalletProvider.tsx +4 -1
- package/src/utils.tsx +11 -0
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.js
CHANGED
|
@@ -24,6 +24,7 @@ __export(src_exports, {
|
|
|
24
24
|
AptosWalletAdapterProvider: () => AptosWalletAdapterProvider,
|
|
25
25
|
WalletContext: () => WalletContext,
|
|
26
26
|
WalletItem: () => WalletItem,
|
|
27
|
+
getAptosConnectWallets: () => getAptosConnectWallets,
|
|
27
28
|
isInstallRequired: () => isInstallRequired,
|
|
28
29
|
isInstalledOrLoadable: () => isInstalledOrLoadable,
|
|
29
30
|
partitionWallets: () => partitionWallets,
|
|
@@ -168,12 +169,13 @@ var AptosWalletAdapterProvider = ({
|
|
|
168
169
|
plugins,
|
|
169
170
|
optInWallets,
|
|
170
171
|
autoConnect = false,
|
|
172
|
+
dappConfig,
|
|
171
173
|
onError
|
|
172
174
|
}) => {
|
|
173
175
|
const [{ connected, account, network, wallet }, setState] = (0, import_react3.useState)(initialState);
|
|
174
176
|
const [isLoading, setIsLoading] = (0, import_react3.useState)(true);
|
|
175
177
|
const walletCore = (0, import_react3.useMemo)(
|
|
176
|
-
() => new import_wallet_adapter_core2.WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : []),
|
|
178
|
+
() => new import_wallet_adapter_core2.WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : [], dappConfig),
|
|
177
179
|
[]
|
|
178
180
|
);
|
|
179
181
|
const [wallets, setWallets] = (0, import_react3.useState)(walletCore.wallets);
|
|
@@ -391,6 +393,13 @@ function partitionWallets(wallets, partitionFunction = isInstalledOrLoadable) {
|
|
|
391
393
|
function isInstalledOrLoadable(wallet) {
|
|
392
394
|
return wallet.readyState === import_wallet_adapter_core3.WalletReadyState.Installed || wallet.readyState === import_wallet_adapter_core3.WalletReadyState.Loadable;
|
|
393
395
|
}
|
|
396
|
+
function getAptosConnectWallets(wallets) {
|
|
397
|
+
const { defaultWallets, moreWallets } = partitionWallets(
|
|
398
|
+
wallets,
|
|
399
|
+
(wallet) => wallet.url.includes("aptosconnect.app")
|
|
400
|
+
);
|
|
401
|
+
return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
|
|
402
|
+
}
|
|
394
403
|
function isInstallRequired(wallet) {
|
|
395
404
|
const isWalletReady = isInstalledOrLoadable(wallet);
|
|
396
405
|
const isMobile = !isWalletReady && (0, import_wallet_adapter_core3.isRedirectable)();
|
|
@@ -406,6 +415,7 @@ function truncateAddress(address) {
|
|
|
406
415
|
AptosWalletAdapterProvider,
|
|
407
416
|
WalletContext,
|
|
408
417
|
WalletItem,
|
|
418
|
+
getAptosConnectWallets,
|
|
409
419
|
isInstallRequired,
|
|
410
420
|
isInstalledOrLoadable,
|
|
411
421
|
partitionWallets,
|
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 * 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","../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 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","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"]}
|
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);
|
|
@@ -375,6 +376,13 @@ function partitionWallets(wallets, partitionFunction = isInstalledOrLoadable) {
|
|
|
375
376
|
function isInstalledOrLoadable(wallet) {
|
|
376
377
|
return wallet.readyState === WalletReadyState2.Installed || wallet.readyState === WalletReadyState2.Loadable;
|
|
377
378
|
}
|
|
379
|
+
function getAptosConnectWallets(wallets) {
|
|
380
|
+
const { defaultWallets, moreWallets } = partitionWallets(
|
|
381
|
+
wallets,
|
|
382
|
+
(wallet) => wallet.url.includes("aptosconnect.app")
|
|
383
|
+
);
|
|
384
|
+
return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
|
|
385
|
+
}
|
|
378
386
|
function isInstallRequired(wallet) {
|
|
379
387
|
const isWalletReady = isInstalledOrLoadable(wallet);
|
|
380
388
|
const isMobile = !isWalletReady && isRedirectable2();
|
|
@@ -389,6 +397,7 @@ export {
|
|
|
389
397
|
AptosWalletAdapterProvider,
|
|
390
398
|
WalletContext,
|
|
391
399
|
WalletItem,
|
|
400
|
+
getAptosConnectWallets,
|
|
392
401
|
isInstallRequired,
|
|
393
402
|
isInstalledOrLoadable,
|
|
394
403
|
partitionWallets,
|
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 * 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","../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 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","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"]}
|
package/dist/utils.d.ts
CHANGED
|
@@ -10,6 +10,14 @@ export declare function partitionWallets(wallets: ReadonlyArray<AnyAptosWallet>,
|
|
|
10
10
|
};
|
|
11
11
|
/** Returns true if the wallet is installed or loadable. */
|
|
12
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
|
+
};
|
|
13
21
|
/**
|
|
14
22
|
* Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.
|
|
15
23
|
* This can be used to decide whether to show a "Connect" button or "Install" link in the UI.
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,iBAAiB,CAAC,MAAM,EAAE,cAAc,WAKvD;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,sBAG1D"}
|
|
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aptos-labs/wallet-adapter-react",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
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.7.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/utils.tsx
CHANGED
|
@@ -32,6 +32,17 @@ export function isInstalledOrLoadable(wallet: AnyAptosWallet) {
|
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
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
|
+
|
|
35
46
|
/**
|
|
36
47
|
* Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.
|
|
37
48
|
* This can be used to decide whether to show a "Connect" button or "Install" link in the UI.
|