Issue Subnames
How It Works
Signature-Free Onboarding
The Hook Returns
import { useAddSubname, useIsSubnameAvailable } from '@justaname.id/react';
import { useState } from 'react';
import { useDebounce } from '@uidotdev/usehooks';
import { ConnectButton } from '@rainbow-me/rainbowkit';
import { useAccount } from 'wagmi';
export const ClaimSubname = () => {
const { isConnected } = useAccount();
const [username, setUsername] = useState('');
const debouncedUsername = useDebounce(username, 500);
const { isSubnameAvailable } = useIsSubnameAvailable({
username: debouncedUsername
});
const { addSubname, isPending } = useAddSubname();
const handleClaim = async () => {
try {
const result = await addSubname({ username });
console.log('Subname claimed:', result);
// result contains the full subname record
} catch (error) {
console.error('Failed to claim subname:', error);
}
};
return (
<div>
<h2>Claim your subname</h2>
<ConnectButton />
<input
value={username}
onChange={(e) => setUsername(e.target.value)}
placeholder="Enter username"
/>
<button
onClick={handleClaim}
disabled={!isSubnameAvailable || !isConnected || !debouncedUsername || isPending}
>
{isPending ? 'Claiming...' : 'Claim'}
</button>
</div>
);
};Last updated