import { useAgentConnection } from '@towns-protocol/react-sdk'
import { useAgentConnection } from '@towns-protocol/react-sdk'
import { makeRiverConfig } from '@towns-protocol/sdk'
import { useState } from 'react'
const riverConfig = makeRiverConfig('gamma')
const Login = () => {
const { connectUsingBearerToken, isAgentConnecting, isAgentConnected } = useAgentConnection()
const [bearerToken, setBearerToken] = useState('')
return (
<>
<input value={bearerToken} onChange={(e) => setBearerToken(e.target.value)} />
<button onClick={() => connectUsingBearerToken(bearerToken, { riverConfig })}>
Login
</button>
{isAgentConnecting && <span>Connecting... ⏳</span>}
{isAgentConnected && <span>Connected ✅</span>}
</>
)
}
useEthersSigner
hook to get an ethers.js v5 Signer from a Viem Wallet Client.
import { useAgentConnection } from '@towns-protocol/react-sdk'
import { makeRiverConfig } from '@towns-protocol/sdk'
import { useEthersSigner } from './utils/viem-to-ethers'
const riverConfig = makeRiverConfig('gamma')
const Login = () => {
const { connect, isAgentConnecting, isAgentConnected } = useAgentConnection()
const signer = useEthersSigner()
return (
<>
<button onClick={async () => {
if (!signer) {
return
}
connect(signer, { riverConfig })
}}>
Login
</button>
{isAgentConnecting && <span>Connecting... ⏳</span>}
{isAgentConnected && <span>Connected ✅</span>}
</>
)
}
function useAgentConnection(): {
connect: (signer: ethers.Signer, config: AgentConnectConfig) => Promise<SyncAgent | undefined>;
connectUsingBearerToken: (bearerToken: string, config: AgentConnectConfig) => Promise<SyncAgent | undefined>;
disconnect: () => void | undefined;
isAgentConnecting: boolean;
isAgentConnected: boolean;
env: string | undefined;
}
{
connect: (signer: ethers.Signer, config: AgentConnectConfig) => Promise<SyncAgent | undefined>;
connectUsingBearerToken: (bearerToken: string, config: AgentConnectConfig) => Promise<SyncAgent | undefined>;
disconnect: () => void | undefined;
isAgentConnecting: boolean;
isAgentConnected: boolean;
env: string | undefined;
}
Was this page helpful?