diff --git a/app/src/app/page.tsx b/app/src/app/page.tsx index 73dd2fd..509ad57 100644 --- a/app/src/app/page.tsx +++ b/app/src/app/page.tsx @@ -20,6 +20,12 @@ export default function PlaygroundPage() { const [mounted, setMounted] = useState(false) useEffect(() => { setMounted(true) }, []) + useEffect(() => { + if (selected && !escrows.some((e) => e.pda === selected.pda)) { + setSelected(null) + } + }, [escrows, selected]) + return ( {/* Header */} diff --git a/app/src/components/ResolverPanel.tsx b/app/src/components/ResolverPanel.tsx index 195da81..b0a5958 100644 --- a/app/src/components/ResolverPanel.tsx +++ b/app/src/components/ResolverPanel.tsx @@ -172,7 +172,7 @@ export function ResolverPanel() { {account.name} {resolverTypeLabel(account.resolverType)} - {account.description && ( + {!!account.description && ( {account.description} )} diff --git a/sdk/src/escrow.ts b/sdk/src/escrow.ts index b4c6ee2..964b00b 100644 --- a/sdk/src/escrow.ts +++ b/sdk/src/escrow.ts @@ -20,7 +20,10 @@ export async function fetchEscrowsForWallet( const walletBytes = walletAddress as never; - const [asSeller, asBuyer] = await Promise.all([ + // Option for disputeResolver: 1-byte discriminant (1=Some) at offset 80, pubkey at offset 81 + const someVariantBase64 = btoa(String.fromCharCode(1)) as never; + + const [asSeller, asBuyer, asResolver] = await Promise.all([ rpc .getProgramAccounts(DESCRO_PROGRAM_ADDRESS, { filters: [ @@ -39,12 +42,22 @@ export async function fetchEscrowsForWallet( encoding: "base64", }) .send(), + rpc + .getProgramAccounts(DESCRO_PROGRAM_ADDRESS, { + filters: [ + { memcmp: { offset: 0n, bytes: discriminatorBase64, encoding: "base64" } }, + { memcmp: { offset: 80n, bytes: someVariantBase64, encoding: "base64" } }, + { memcmp: { offset: 81n, bytes: walletBytes, encoding: "base58" } }, + ], + encoding: "base64", + }) + .send(), ]); const seen = new Set(); const results: EscrowAccountWithPda[] = []; - for (const item of [...asSeller, ...asBuyer]) { + for (const item of [...asSeller, ...asBuyer, ...asResolver]) { const pda = item.pubkey; if (seen.has(pda)) continue; seen.add(pda);