Skip to main content

useAccount

Hook to retrieve account data with optional arguments to invoke given function on connect/disconnect.

useAccount retrieves connected/active chains if there's no chainId passed to the hook param. All accounts are returned in a Record<chainId, Key> format.

Usage

import { useAccount } from "graz";

// Single or multiple chains
const { data: accounts, isConnecting, isConnected } = useAccount({
chainId: ["cosmoshub-4", "osmosis-1"],
});

// Extract account for specific chain
const cosmosAccount = accounts?.["cosmoshub-4"];
const osmosisAccount = accounts?.["osmosis-1"];

console.log(cosmosAccount?.bech32Address);

All Active Chains

import { useAccount } from "graz";

// Without chainId, uses all active chains from session
const { data: accounts } = useAccount();

// Iterate over all connected chains
{accounts && Object.entries(accounts).map(([chainId, account]) => (
<div key={chainId}>
{chainId}: {account.bech32Address}
</div>
))}

With Event Arguments

useAccount({
chainId: ["cosmoshub-4"],
onConnect: ({ accounts, isReconnect }) => {
console.log("Connected to chains:", Object.keys(accounts));
},
onDisconnect: () => {
console.log("Disconnected");
},
});

Hook Params

{
chainId?: string[]; // Array of chain IDs, defaults to active chains
onConnect?: (ConnectResult & { isReconnect: boolean }) => void;
onDisconnect?: () => void;
}

ConnectResult

{
accounts: Record<string, Key>;
walletType: WalletType;
chains: ChainInfo[];
}

Return Value

{
data?: Record<string, Key>; // Key from @keplr-wallet/types
isConnected: boolean;
isConnecting: boolean;
isDisconnected: boolean;
isReconnecting: boolean;
reconnect: (args?: ConnectArgs) => Promise<ConnectResult>;
status: "connected" | "connecting" | "reconnecting" | "disconnected";
walletType?: WalletType;
}