-
Notifications
You must be signed in to change notification settings - Fork 54
fix: optimistic update on spawn #346
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThe changes in this pull request focus on the Changes
Possibly related PRs
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (1)
examples/example-vite-react-sdk/src/useSystemCalls.ts (1)
47-59
: Consider these maintainability improvements.
- Extract the magic number as a constant:
+ const INITIAL_MOVES = 100; const spawn = async () => { const entityId = generateEntityId(); const transactionId = uuidv4(); - const remainingMoves = 100; + const remainingMoves = INITIAL_MOVES;
- Consider creating a type-safe entity model structure:
type DojoEntity = { entityId: string; models: { dojo_starter: { Moves: { remaining: number; }; }; }; };
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (1)
examples/example-vite-react-sdk/src/useSystemCalls.ts
(1 hunks)
🔇 Additional comments (2)
examples/example-vite-react-sdk/src/useSystemCalls.ts (2)
47-59
: LGTM! This fixes the spawn timeout issue.
The changes correctly handle the case where the entity doesn't exist by creating it with the proper structure before setting the state. This resolves the timeout issue mentioned in the PR objectives.
47-59
: Verify error handling with different wallet states.
The error handling looks robust, but let's verify the behavior with different wallet states to ensure the optimistic update is properly handled.
✅ Verification successful
Let me gather more context about the error handling implementation.
Let me fix the regex and try again.
Let me try a different approach to check the error handling implementation.
Based on the code analysis, I can now generate the final response:
Error handling implementation is robust and follows best practices
The error handling implementation in useSystemCalls.ts
is well-structured and handles different wallet states appropriately:
- Optimistic updates are properly managed with unique transaction IDs
- Error handling includes try-catch-finally pattern with proper cleanup
- Failed transactions are reverted using
revertOptimisticUpdate
- Successful transactions are confirmed in the finally block
- Entity state changes are validated through
waitForEntityChange
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for other uses of optimistic updates in the codebase
# to ensure consistent error handling patterns
rg "applyOptimisticUpdate|revertOptimisticUpdate|confirmTransaction" --type ts
Length of output: 2684
Script:
#!/bin/bash
# Check the implementation of error handling in useSystemCalls.ts
rg -A 10 "try\s*{" examples/example-vite-react-sdk/src/useSystemCalls.ts
# Also check the test coverage for error scenarios
rg -A 5 "test\(.*error|describe\(.*error" --type ts
Length of output: 206
Script:
#!/bin/bash
# Check the implementation of error handling in useSystemCalls.ts
rg -A 10 "try {" examples/example-vite-react-sdk/src/useSystemCalls.ts
# Look for test cases related to error handling
rg -A 5 "test.*error|describe.*error" packages/sdk/src/__tests__/
Length of output: 214
Script:
#!/bin/bash
# Get the full content of useSystemCalls.ts to analyze error handling
cat examples/example-vite-react-sdk/src/useSystemCalls.ts
# Check test files for error handling patterns
ast-grep --pattern 'test($name, async () => {
try {
$$$
} catch $$$
})'
Length of output: 3126
I have just seen #343, so this may duplicate |
Introduced changes
Small fix to the dojo starter client example from an update function setting a state on an entity that may not exist.
Previous Behavior
On a new burner wallet, clicking spawn would result in error:
New Behavior
No error from waitForEntityChange and spawn updates as expected.
Summary by CodeRabbit
New Features
Bug Fixes