feat(web): explain empty profiles and prompt linking CLI deploy wallet - #376
Conversation
|
@kelvinokwudili52-stack 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! 🚀 |
|
@kelvinokwudili52-stack 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. |
✅ Deploy Preview for stellar-signet ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
blockchain-maxis
left a comment
There was a problem hiding this comment.
The empty state this adds is the right one — it names the actual cause (the claiming wallet is rarely the deploy key), gives the exact command, and gating on "handle claimed but no deploy wallet" means it disappears on its own once one is linked, with no dismiss state to manage. That's #287's acceptance, and putting it on the dashboard, the wallets page and the profile operations list covers the three places a developer would hit the confusion.
Two things to fix before I can merge.
1. The branch is stale and conflicts. It's based on 8216232 ("feat: report nonce and rate-limit store status in /health (#309)"), and both pages it edits have moved since:
CONFLICT (content): Merge conflict in apps/web/app/(dashboard)/app/page.tsx
CONFLICT (content): Merge conflict in apps/web/app/(dashboard)/app/wallets/page.tsx
Relevant commits on main: #333 (unlink from the dashboard), #337 (rewrote the very wallets-page paragraph this PR replaces), #362 (the indexing… badge), #329 (Wallet.source). Please rebase onto main. Note that #337 already reworded the "To link an additional wallet…" copy, so re-check whether your replacement paragraph is still saying something main doesn't.
2. Use source, not !isPrimary, to detect a deploy wallet. wallets.some((w) => !w.isPrimary) treats any non-primary wallet as a deploy wallet. Since #329, getAccountWallets returns a validated source of 'curated' | 'onchain' | 'cli' (apps/web/lib/server/account.ts:136), and the thing #287 is asking about is specifically a CLI-linked one:
const hasDeployWallet = wallets.some((w) => w.source === 'cli');As written, a second onchain wallet claimed through the registry would suppress the prompt even though no deploy wallet exists — exactly the case the issue is about. #378 is open against Wallet.source rendering on this same page, so the two should agree on the signal.
Everything else — the component, its doc comment, the copy — I'd take as-is.
9d247dd
into
blockchain-maxis:main
Summary
When a developer claims a handle using a browser wallet (like Freighter), that wallet is rarely the keystore identity used for \stellar contract deploy. As a result, the profile and dashboard render with empty activity and no explanation.
This PR adds an empty state prompt explaining why the profile is empty and provides the exact command (
px @signet/cli link) to link CLI deploy wallets.
Changes
px @signet/cli link.
Verification
px pnpm --filter @signet/web run typecheck\ passed cleanly.
px pnpm --filter @signet/web run lint\ passed.
px pnpm test\ passed (all 207 tests passing).
closes #287