Conversation
Extract shared Skeleton and StatePanel components to @acta-products/ui. Replace spinner loading with skeleton placeholders in list and detail views. Show a connect-wallet CTA when the vault is empty and no session exists. Wire error states through StatePanel with retry actions and i18n copy.
|
@jean1222312432 is attempting to deploy a commit to the ACTA Team on Vercel. A member of the Team first needs to authorize it. |
|
Warning Review limit reached
More reviews will be available in 48 minutes and 29 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. 📝 WalkthroughWalkthroughCredential history views now use shared Skeleton and StatePanel components for loading, empty, and not-found states. The list view adds session-aware connect-wallet copy, and the UI package exports the new shared primitives. ChangesCredential history state UI
Possibly related issues
Possibly related PRs
Suggested reviewers
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (2)
apps/credit-history/src/components/credentials/credentials-view.tsx (1)
130-139: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick winConsider reflecting the connecting state on the CTA.
connect()runs an async flow (simulated ~800ms latency) but the button has no pending/disabled treatment, so the user can fire multiple overlappingconnect()calls and gets no feedback while it resolves. Failures are only sent toconsole.error, leaving the UI silent. SinceuseSession()already exposes a'connecting'status, you can disable the button and swap the label.♻️ Possible adjustment
<Button size="sm" className="cursor-pointer gap-1.5" - onClick={() => connect().catch(console.error)} + disabled={sessionStatus === 'connecting'} + onClick={() => connect().catch(console.error)} > <Wallet className="size-3.5" /> - {tSession('connect')} + {sessionStatus === 'connecting' ? tSession('connecting') : tSession('connect')} </Button>🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/credit-history/src/components/credentials/credentials-view.tsx` around lines 130 - 139, The CTA in CredentialsView should reflect the async connect flow so users can’t trigger overlapping calls and get no feedback while it resolves. Update the Button that calls connect() to use the useSession() status, disabling it when status is 'connecting' and swapping the label to a connecting/pending state. Also handle the connect() promise failure in the same place so the UI can surface or route the error instead of only relying on console.error.apps/credit-history/src/i18n/messages/en.json (1)
60-61: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueDuplicate copy across namespaces.
credentials.empty.connectDescriptionis identical to the existingsession.connectCta("Connect your Stellar wallet to access your credentials."). Not a defect, but consider reusing one key to avoid drift between the two strings over time.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/credit-history/src/i18n/messages/en.json` around lines 60 - 61, The duplicate wallet copy in the i18n messages should be consolidated so `credentials.empty.connectDescription` does not repeat the same string as `session.connectCta`. Update the message definitions in the JSON namespace to reuse a single source of truth, and adjust the relevant consumers so they reference the shared key instead of maintaining two identical translations.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@apps/credit-history/src/components/credentials/credentials-view.tsx`:
- Around line 130-139: The CTA in CredentialsView should reflect the async
connect flow so users can’t trigger overlapping calls and get no feedback while
it resolves. Update the Button that calls connect() to use the useSession()
status, disabling it when status is 'connecting' and swapping the label to a
connecting/pending state. Also handle the connect() promise failure in the same
place so the UI can surface or route the error instead of only relying on
console.error.
In `@apps/credit-history/src/i18n/messages/en.json`:
- Around line 60-61: The duplicate wallet copy in the i18n messages should be
consolidated so `credentials.empty.connectDescription` does not repeat the same
string as `session.connectCta`. Update the message definitions in the JSON
namespace to reuse a single source of truth, and adjust the relevant consumers
so they reference the shared key instead of maintaining two identical
translations.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 394be4a7-a72e-47d9-b85a-59f756d04ec8
📒 Files selected for processing (7)
apps/credit-history/src/components/credentials/credential-detail-view.tsxapps/credit-history/src/components/credentials/credentials-view.tsxapps/credit-history/src/i18n/messages/en.jsonapps/credit-history/src/i18n/messages/es.jsonpackages/ui/src/components/skeleton.tsxpackages/ui/src/components/state-panel.tsxpackages/ui/src/index.ts
…ining The bare NEXT_PUBLIC_MOCK_MODE global was never replaced in transpiled workspace packages, so mock modes always fell back to normal.
Summary
SkeletonandStatePanelcomponents to@acta-products/ui.StatePanelwith retry actions and i18n copy (en/es).Closes #18
Summary by CodeRabbit
New Features
Bug Fixes
Documentation