Conversation
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 15 minutes and 19 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThis PR integrates eVault-based key resolution and synchronization into the wallet. It adds a method to Changes
Sequence DiagramsequenceDiagram
actor User
participant UI as UI Component
participant KeyService
participant VaultController
participant eVault as eVault API
participant Storage as Local Storage
User->>UI: Request signing
UI->>KeyService: getManager() / signPayload()
KeyService->>Storage: Restore persisted context
alt Persisted context found
KeyService->>Storage: Verify key exists
KeyService-->>UI: Use restored manager
else Persisted context missing/invalid
KeyService->>KeyService: setEvaultKeyResolver()
KeyService->>VaultController: Call resolver
VaultController->>eVault: GET /whois (with ename)
eVault-->>VaultController: Return keyBindingCertificates
VaultController->>VaultController: Decode & filter certs
VaultController-->>KeyService: Return public keys[]
KeyService->>Storage: Compare with local keys
KeyService-->>UI: Resolved manager
end
UI->>KeyService: signPayload() pre-sign
KeyService->>KeyService: setEvaultSyncHandler()
KeyService->>VaultController: Call sync handler
VaultController->>eVault: Sync public key
eVault-->>VaultController: Sync complete
KeyService->>Storage: Sign with resolved key
Storage-->>KeyService: Signature
KeyService-->>UI: Return signature
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ❌ 3❌ Failed checks (3 warnings)
✏️ 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.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`:
- Around line 721-723: The JWT payload decoding omits base64url padding before
calling atob, causing InvalidCharacterError for unpadded segments; update the
decoding in the evault controller (the code that builds b64 from parts[1] and
parses payload) to add '=' padding until b64.length % 4 === 0 before calling
atob, then JSON.parse the result into the existing payload variable so valid
certificates aren't skipped.
In `@infrastructure/eid-wallet/src/lib/global/controllers/key.ts`:
- Around line 25-26: The pre-sign sync hook currently lacks a signing context
and a success result which lets the wrong keyId be cached as "synced"; update
the hook signature(s) and callers so the handler receives the exact keyId and
signing context and returns a boolean success. Concretely: change
EvaultKeyResolver/EvaultSyncHandler types and any GlobalState hook/method
signatures to accept (keyId: string, context: string) and return
Promise<boolean>, update VaultController.syncPublicKey to accept the same
(keyId, context) and return true only when the upload actually succeeds
(propagate errors instead of swallowing), and modify the code that caches synced
keys (the lines that currently store raw keyId after handler return) to cache
only when the handler returned true. Ensure all call sites (including where
VaultController.syncPublicKey is invoked) pass the validated keyId and context
through.
- Around line 99-119: The current logic deletes this.#contexts entry using
cacheKey when a restored manager is missing, but if persisted came from
`#findPersistedByKeyId`(keyId) you must delete the actual persisted map entry
instead of cacheKey; change the cleanup to remove the map key that corresponds
to the persisted entry (e.g., capture the mapKey returned/identified by
`#findPersistedByKeyId` or locate the matching entry in this.#contexts and call
this.#contexts.delete(matchingMapKey)), then call this.#store.set(CONTEXTS_KEY,
Object.fromEntries(this.#contexts)); apply the same fix for the other occurrence
at the 481-487 region.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9dbcefad-352b-45cb-9819-a4130689444b
📒 Files selected for processing (10)
infrastructure/eid-wallet/src/lib/global/controllers/evault.tsinfrastructure/eid-wallet/src/lib/global/controllers/key.tsinfrastructure/eid-wallet/src/lib/global/state.tsinfrastructure/eid-wallet/src/routes/(app)/ePassport/+page.svelteinfrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.tsinfrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelteplatforms/blabsy/client/src/components/chat/chat-window.tsxplatforms/blabsy/client/src/lib/context/chat-context.tsxplatforms/esigner/client/src/lib/stores/files.tsplatforms/pictique/client/src/routes/(protected)/messages/[id]/+page.svelte
|
Caution Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted. Error details |
Description of change
Issue Number
Type of change
How the change has been tested
Change checklist
Summary by CodeRabbit
Release Notes
New Features
Improvements
Refactor