-
-
Notifications
You must be signed in to change notification settings - Fork 10.9k
Added Valtio experiment for reactive state management in ActivityPub #23956
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
base: main
Are you sure you want to change the base?
Conversation
- Added basic feed store with posts array and setPosts action - Synced React Query feed data to Valtio store - Updated FeedList to render from store instead of props
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughA new state management approach was introduced to the 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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. 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
🧹 Nitpick comments (1)
apps/admin-x-activitypub/src/stores/feed-store.ts (1)
18-24
: LGTM: Well-structured store actions.The actions object provides a clean API for updating the store. The direct mutation of
feedStore.posts
is the correct pattern for Valtio stores.Consider expanding the actions object in the future to include methods like:
addPost(post: Activity)
for adding individual postsupdatePost(id: string, updates: Partial<Activity>)
for updating specific postsclearPosts()
for clearing the feedThis would provide a more comprehensive API as the application grows.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lock
is excluded by!**/yarn.lock
,!**/*.lock
📒 Files selected for processing (5)
apps/admin-x-activitypub/package.json
(1 hunks)apps/admin-x-activitypub/src/stores/feed-store.ts
(1 hunks)apps/admin-x-activitypub/src/stores/sync-feed.ts
(1 hunks)apps/admin-x-activitypub/src/views/Feed/Feed.tsx
(1 hunks)apps/admin-x-activitypub/src/views/Feed/components/FeedList.tsx
(4 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Setup
🔇 Additional comments (13)
apps/admin-x-activitypub/package.json (1)
76-76
: Verify the Valtio version and check for security advisories.Ensure that the specified version
^2.1.5
is valid, secure, and compatible with the project's other dependencies.#!/bin/bash # Description: Verify Valtio version availability and security advisories # Check latest version of Valtio npm view valtio versions --json | jq '.[-5:]' # Check for security advisories gh api graphql -f query=' { securityVulnerabilities(first: 5, ecosystem: NPM, package: "valtio") { nodes { advisory { summary severity publishedAt } vulnerableVersionRange firstPatchedVersion { identifier } } } }'apps/admin-x-activitypub/src/views/Feed/Feed.tsx (3)
7-7
: LGTM: Clean integration of the synchronization hook.The import statement properly integrates the new sync functionality.
15-16
: LGTM: Proper synchronization with Valtio store.The synchronization call is well-placed and includes a helpful comment explaining its purpose.
20-26
: Verify that FeedList component interface has been updated.The
activities
prop is no longer passed toFeedList
. Ensure that the component's interface and implementation have been properly updated to consume data from the store.#!/bin/bash # Description: Verify FeedList component interface and prop usage # Check FeedList component interface to ensure activities prop is removed ast-grep --pattern 'export type FeedListProps = { $$$ }' # Check if activities prop is still being used anywhere in FeedList rg -A 3 'activities' apps/admin-x-activitypub/src/views/Feed/components/FeedList.tsxapps/admin-x-activitypub/src/stores/sync-feed.ts (2)
5-7
: LGTM: Clear interface definition for paginated response.The
PaginatedResponse
interface properly defines the expected structure for paginated feed data.
9-17
: ```shell
#!/bin/bashPreview the feedQuery definition to inspect its return structure
sed -n '1350,1450p' apps/admin-x-activitypub/src/hooks/use-activity-pub-queries.ts
</details> <details> <summary>apps/admin-x-activitypub/src/views/Feed/components/FeedList.tsx (4)</summary> `10-10`: **LGTM: Proper integration of the feed store hook.** The import statement correctly integrates the Valtio store hook. --- `29-31`: **LGTM: Clean integration of reactive store data.** The component properly accesses reactive data from the Valtio store with a helpful comment. --- `63-63`: **LGTM: Consistent replacement of activities with store data.** All references to the activities array have been correctly replaced with `feedState.posts` from the store, maintaining the same functionality while using the centralized state management. Also applies to: 69-69, 76-76, 98-98 --- `13-19`: **Verify that the activities prop has been removed from the interface.** The component no longer receives activities as a prop. Ensure the `FeedListProps` interface has been updated to remove the activities property. ```shell #!/bin/bash # Description: Verify the FeedListProps interface has been updated # Check the exact interface definition ast-grep --pattern 'export type FeedListProps = { $$$ }' # Ensure no activities prop remains in the interface rg 'activities.*Activity\[\]' apps/admin-x-activitypub/src/views/Feed/components/FeedList.tsx
apps/admin-x-activitypub/src/stores/feed-store.ts (3)
4-6
: LGTM: Well-defined store interface.The
FeedStore
interface clearly defines the store structure with proper TypeScript typing.
8-11
: LGTM: Proper Valtio proxy store initialization.The store is correctly initialized using Valtio's
proxy()
with appropriate default state.
13-16
: LGTM: Clean reactive hook implementation.The hook properly uses
useSnapshot()
to provide reactive access to the store state for React components.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #23956 +/- ##
=======================================
Coverage 72.38% 72.38%
=======================================
Files 1533 1533
Lines 112636 112636
Branches 13768 13768
=======================================
Hits 81537 81537
- Misses 30061 30078 +17
+ Partials 1038 1021 -17
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
no issues