import { useEffect, useState } from "react";
import { aurum } from "./aurum";
import { walletClient } from './viem';
export default function App() {
const [address, setAddress] = useState<`0x${string}` | null>(null);
const [isLoading, setIsLoading] = useState(true);
// Check isConnected on page load
useEffect(() => {
aurum.whenReady().then(async () => {
if (await aurum.isConnected()) {
const user = await aurum.getUserInfo();
setAddress(user?.publicAddress ?? null);
}
setIsLoading(false);
});
}, []);
// Listen for account changes
useEffect(() => {
const handleAccountsChanged = (accounts: string[]) => {
setAddress(accounts[0] ?? null);
};
aurum.rpcProvider.on?.("accountsChanged", handleAccountsChanged);
return () => {
aurum.rpcProvider.off?.("accountsChanged", handleAccountsChanged);
};
}, []);
async function connect() {
const publicAddress = await aurum.connect();
setAddress(publicAddress);
}
async function disconnect() {
await aurum.disconnect();
setAddress(null);
}
async function signMessage() {
const [account] = await walletClient.getAddresses();
const signature = await walletClient.signMessage({
account,
message: "Hello from Aurum!",
});
console.log("signature", signature);
}
if (isLoading) return <div>Loading...</div>;
return (
<div>
{!address ? (
<button onClick={connect}>Connect Wallet</button>
) : (
<div>
<p>User: {address}</p>
<button onClick={signMessage}>Sign Message</button>
<button onClick={disconnect}>Disconnect</button>
</div>
)}
</div>
);
}