Skip to content

feat(web): read real wallet bindings on the dashboard - #103

Merged
blockchain-maxis merged 2 commits into
blockchain-maxis:mainfrom
kaylachi:feat/dashboard-wallets-real-bindings
Aug 9, 2026
Merged

feat(web): read real wallet bindings on the dashboard#103
blockchain-maxis merged 2 commits into
blockchain-maxis:mainfrom
kaylachi:feat/dashboard-wallets-real-bindings

Conversation

@kaylachi

Copy link
Copy Markdown
Contributor

Summary

The dashboard Wallets page only ever read the indexer/database, so a wallet whose handle was claimed on-chain showed nothing until the indexer caught up (and showed a misleading empty state on networks where the registry isn't even deployed).

This wires the page to the on-chain Identity Registry:

  • New apps/web/lib/server/registry-read.ts — server-side, read-only lookupHandleOnchain(wallet) that simulates the registry's lookup call over Soroban RPC (no signing, no submission), plus isRegistryConfigured(). Both fail closed: unconfigured registry, unbound wallet, or unreachable RPC all return null/false.
  • wallets/page.tsx — when the database is empty, falls back to the on-chain read so a binding surfaces immediately. The empty state now distinguishes 'registry not deployed on this network' from 'no wallets linked yet'.

Testing

  • pnpm --filter @signet/web typecheck
  • pnpm --filter @signet/web test ✅ (54/54, incl. 3 new registry-read tests covering the config gate + fail-closed unconfigured path)
  • pnpm --filter @signet/web lint

Closes #51

The wallets page only ever read the indexer/database, so a wallet whose
handle was claimed on-chain showed nothing until the indexer caught up.
Add a server-side read-only registry lookup (Soroban RPC simulation, no
signing) and fall back to it when the database is empty, so an on-chain
binding surfaces immediately. When the Identity Registry isn't deployed
on the active network the page shows an honest empty state instead of a
misleading 'no wallets linked' message.

Closes blockchain-maxis#51
@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

@kaylachi is attempting to deploy a commit to the blockchainmaxis-8449's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jul 28, 2026

Copy link
Copy Markdown

@kaylachi Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@netlify

netlify Bot commented Jul 28, 2026

Copy link
Copy Markdown

Deploy Preview for stellar-signet ready!

Name Link
🔨 Latest commit a709965
🔍 Latest deploy log https://app.netlify.com/projects/stellar-signet/deploys/6a790d8d77d83c000982fc5c
😎 Deploy Preview https://deploy-preview-103--stellar-signet.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

main gained its own `lib/server/registry-read.ts` (view-call helpers for
resolve / lookup / count, with a `SimulatingServer` seam and their own tests),
which lands the same capability this branch added as `lookupHandleOnchain`.
Dropped the duplicate in favour of main's, and pointed the wallets page at
`lookupWallet` — that one also validates the address and the returned handle
before trusting them.

The page wiring, which is what issue blockchain-maxis#51 is actually about, is unchanged: the
on-chain read is a fallback for when the database has nothing, and the empty
state still distinguishes an unconfigured registry from no linked wallets.

Closes blockchain-maxis#51.
@blockchain-maxis
blockchain-maxis merged commit 00d630d into blockchain-maxis:main Aug 9, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dashboard wallets page reads real bindings

2 participants