- React
- Browser SDK
- React Native
Report incorrect code
Copy
Ask AI
import { useSolana, useAccounts } from "@phantom/react-sdk";
import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
import { getAssociatedTokenAddress, getAccount } from "@solana/spl-token";
import { useEffect, useState } from "react";
function WalletBalance() {
const { solana } = useSolana();
const addresses = useAccounts();
const [solBalance, setSolBalance] = useState<number | null>(null);
const [loading, setLoading] = useState(false);
const checkBalance = async () => {
if (!addresses?.[0]) return;
setLoading(true);
try {
const connection = new Connection("https://api.mainnet-beta.solana.com");
const publicKey = new PublicKey(addresses[0].address);
// Get SOL balance
const balance = await connection.getBalance(publicKey);
setSolBalance(balance / LAMPORTS_PER_SOL);
} catch (error) {
console.error("Failed to fetch balance:", error);
} finally {
setLoading(false);
}
};
useEffect(() => {
if (addresses?.[0]) {
checkBalance();
}
}, [addresses]);
if (!addresses?.[0]) {
return <div>Please connect your wallet</div>;
}
return (
<div>
<h2>Wallet Balance</h2>
<p>Address: {addresses[0].address}</p>
{loading ? (
<p>Loading balance...</p>
) : (
<p>SOL Balance: {solBalance?.toFixed(4) ?? "0.0000"} SOL</p>
)}
<button onClick={checkBalance}>Refresh Balance</button>
</div>
);
}
Report incorrect code
Copy
Ask AI
import { BrowserSDK, AddressType } from "@phantom/browser-sdk";
import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
const sdk = new BrowserSDK({
providers: ["google", "apple", "injected"],
appId: "your-app-id",
addressTypes: [AddressType.solana],
});
async function getWalletBalance() {
if (!sdk.solana.isConnected()) {
await sdk.connect({ provider: "google" });
}
const connection = new Connection("https://api.mainnet-beta.solana.com");
const publicKey = new PublicKey(await sdk.solana.getPublicKey());
// Get SOL balance
const balance = await connection.getBalance(publicKey);
const solBalance = balance / LAMPORTS_PER_SOL;
return {
address: publicKey.toString(),
solBalance,
lamports: balance,
};
}
// Usage
const balance = await getWalletBalance();
console.log(`${balance.solBalance} SOL`);
Report incorrect code
Copy
Ask AI
import { useSolana, useAccounts } from "@phantom/react-native-sdk";
import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
import { View, Text, Button, StyleSheet, ActivityIndicator } from "react-native";
import { useEffect, useState } from "react";
function WalletBalance() {
const { solana } = useSolana();
const addresses = useAccounts();
const [solBalance, setSolBalance] = useState<number | null>(null);
const [loading, setLoading] = useState(false);
const checkBalance = async () => {
if (!addresses?.[0]) return;
setLoading(true);
try {
const connection = new Connection("https://api.mainnet-beta.solana.com");
const publicKey = new PublicKey(addresses[0].address);
const balance = await connection.getBalance(publicKey);
setSolBalance(balance / LAMPORTS_PER_SOL);
} catch (error) {
console.error("Failed to fetch balance:", error);
} finally {
setLoading(false);
}
};
useEffect(() => {
if (addresses?.[0]) {
checkBalance();
}
}, [addresses]);
if (!addresses?.[0]) {
return (
<View style={styles.container}>
<Text>Please connect your wallet</Text>
</View>
);
}
return (
<View style={styles.container}>
<Text style={styles.title}>Wallet Balance</Text>
<Text style={styles.address}>{addresses[0].address}</Text>
{loading ? (
<ActivityIndicator size="large" style={styles.loader} />
) : (
<Text style={styles.balance}>
{solBalance?.toFixed(4) ?? "0.0000"} SOL
</Text>
)}
<Button title="Refresh Balance" onPress={checkBalance} />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20,
justifyContent: "center",
},
title: {
fontSize: 24,
fontWeight: "bold",
marginBottom: 10,
},
address: {
fontSize: 14,
color: "#666",
marginBottom: 20,
},
balance: {
fontSize: 32,
fontWeight: "bold",
marginBottom: 20,
},
loader: {
marginVertical: 20,
},
});
Get token balances
Check balances for specific SPL tokens:- React
- Browser SDK
Report incorrect code
Copy
Ask AI
import { useSolana, useAccounts } from "@phantom/react-sdk";
import { Connection, PublicKey } from "@solana/web3.js";
import { getAssociatedTokenAddress, getAccount, getMint } from "@solana/spl-token";
import { useState } from "react";
const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
function TokenBalance() {
const { solana } = useSolana();
const addresses = useAccounts();
const [tokenBalance, setTokenBalance] = useState<string | null>(null);
const checkTokenBalance = async () => {
if (!addresses?.[0]) return;
try {
const connection = new Connection("https://api.mainnet-beta.solana.com");
const publicKey = new PublicKey(addresses[0].address);
// Get associated token account
const tokenAccount = await getAssociatedTokenAddress(USDC_MINT, publicKey);
// Get token account info
const accountInfo = await getAccount(connection, tokenAccount);
// Get mint info to get decimals
const mintInfo = await getMint(connection, USDC_MINT);
// Calculate balance with decimals
const balance = Number(accountInfo.amount) / 10 ** mintInfo.decimals;
setTokenBalance(balance.toFixed(mintInfo.decimals));
} catch (error) {
// Token account doesn't exist
setTokenBalance("0");
}
};
return (
<div>
<button onClick={checkTokenBalance}>Check USDC Balance</button>
{tokenBalance !== null && <p>USDC Balance: {tokenBalance}</p>}
</div>
);
}
Report incorrect code
Copy
Ask AI
import { BrowserSDK, AddressType } from "@phantom/browser-sdk";
import { Connection, PublicKey } from "@solana/web3.js";
import { getAssociatedTokenAddress, getAccount, getMint } from "@solana/spl-token";
const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const sdk = new BrowserSDK({
providers: ["google", "apple", "injected"],
appId: "your-app-id",
addressTypes: [AddressType.solana],
});
async function getTokenBalance(mintAddress: PublicKey) {
const connection = new Connection("https://api.mainnet-beta.solana.com");
const publicKey = new PublicKey(await sdk.solana.getPublicKey());
try {
const tokenAccount = await getAssociatedTokenAddress(mintAddress, publicKey);
const accountInfo = await getAccount(connection, tokenAccount);
const mintInfo = await getMint(connection, mintAddress);
const balance = Number(accountInfo.amount) / 10 ** mintInfo.decimals;
return balance;
} catch {
return 0; // Token account doesn't exist
}
}
// Usage
const usdcBalance = await getTokenBalance(USDC_MINT);
console.log(`USDC Balance: ${usdcBalance}`);