useShieldedRead
Execute authenticated read calls on shielded contracts
Last updated
import { useSignedReadContract } from 'seismic-react'
import { useState } from 'react'
const abi = [
{
name: 'balanceOf',
type: 'function',
stateMutability: 'view',
inputs: [],
outputs: [{ name: '', type: 'uint256' }],
},
] as const
function ShieldedBalance() {
const [balance, setBalance] = useState<string | null>(null)
const { signedRead, isLoading, error } = useSignedReadContract({
address: '0x1234567890abcdef1234567890abcdef12345678',
abi,
functionName: 'balanceOf',
})
async function fetchBalance() {
const result = await signedRead()
if (result !== undefined) {
setBalance(result.toString())
}
}
return (
<div>
<button onClick={fetchBalance} disabled={isLoading}>
{isLoading ? 'Reading...' : 'Get Balance'}
</button>
{balance && <p>Balance: {balance}</p>}
{error && <p>Error: {error.message}</p>}
</div>
)
}import { useSignedReadContract } from 'seismic-react'
function ReadWithLoadingState() {
const { signedRead, isLoading, error } = useSignedReadContract({
address: CONTRACT_ADDRESS,
abi,
functionName: 'getSecret',
})
return (
<div>
<button onClick={signedRead} disabled={isLoading}>
{isLoading ? 'Fetching...' : 'Read Secret'}
</button>
{isLoading && <span>Please wait, signing and decrypting...</span>}
</div>
)
}import { useSignedReadContract } from 'seismic-react'
function ReadWithErrorHandling() {
const { signedRead, error } = useSignedReadContract({
address: CONTRACT_ADDRESS,
abi,
functionName: 'balanceOf',
})
async function handleRead() {
try {
const result = await signedRead()
console.log('Result:', result)
} catch (e) {
console.error('Signed read failed:', e)
}
}
return (
<div>
<button onClick={handleRead}>Read</button>
{error && <p style={{ color: 'red' }}>Last error: {error.message}</p>}
</div>
)
}