Changed profile modal to always remote load in admin-x-activitypub#22012
Changed profile modal to always remote load in admin-x-activitypub#22012
admin-x-activitypub#22012Conversation
no refs Changed profile modal to always remote load in admin-x-activitypub instead of both accepting an object or a string. This will allow for easier refactoring of the modal when we switch this area of the app to use `accounts` instead of `profiles`
|
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 eslint
apps/admin-x-activitypub/src/components/Profile.tsxOops! Something went wrong! :( ESLint: 8.44.0 ESLint couldn't find the plugin "eslint-plugin-react-hooks". (The package "eslint-plugin-react-hooks" was not found when loaded as a Node module from the directory "/apps/admin-x-activitypub".) It's likely that the plugin isn't installed correctly. Try reinstalling by running the following: The plugin "eslint-plugin-react-hooks" was referenced from the config file in "apps/admin-x-activitypub/.eslintrc.cjs". If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team. WalkthroughThe pull request introduces a systematic refactoring across multiple components in the ActivityPub admin interface, focusing on simplifying how profile handles are passed to modals. The changes consistently replace a complex profile object with a simple Changes
Sequence DiagramsequenceDiagram
participant Component
participant NiceModal
participant ViewProfileModal
Component->>NiceModal: show(handle)
NiceModal->>ViewProfileModal: Render with handle
ViewProfileModal->>ViewProfileModal: Fetch profile data
ViewProfileModal-->>Component: Display profile details
Possibly related PRs
Poem
Finishing Touches
🪧 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.
Actionable comments posted: 0
🧹 Nitpick comments (3)
apps/admin-x-activitypub/src/components/Search.tsx (1)
51-51: Consider destructuring for improved readability.While the change correctly implements the new modal interface, the code could be more readable with destructuring.
-NiceModal.show(ViewProfileModal, {handle: result.handle, onFollow, onUnfollow}); +const {handle} = result; +NiceModal.show(ViewProfileModal, {handle, onFollow, onUnfollow});apps/admin-x-activitypub/src/components/modals/ViewProfileModal.tsx (1)
227-234: Consider implementing caching for profile data.Since the modal now always loads profile data remotely, implementing a caching strategy (e.g., React Query's caching capabilities) could improve performance and reduce unnecessary network requests, especially for frequently viewed profiles.
apps/admin-x-activitypub/src/components/Profile.tsx (1)
Line range hint
1-424: Consider further componentization opportunities.The codebase is well-structured, but as you transition from
profilestoaccounts, consider these architectural improvements:
- Extract tab components (
PostsTab,LikesTab, etc.) into separate files to improve maintainability- Create a shared
AccountListItemcomponent to reduce duplication inFollowingTabandFollowersTab- Consider implementing a central account state management solution to handle the transition more effectively
These changes would make the codebase more maintainable and easier to refactor in the future.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
apps/admin-x-activitypub/src/components/Profile.tsx(1 hunks)apps/admin-x-activitypub/src/components/Search.tsx(1 hunks)apps/admin-x-activitypub/src/components/global/APAvatar.tsx(1 hunks)apps/admin-x-activitypub/src/components/modals/ViewProfileModal.tsx(1 hunks)apps/admin-x-activitypub/src/utils/handle-profile-click.ts(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Unit tests (Node 20.11.1)
- GitHub Check: Unit tests (Node 18.12.1)
- GitHub Check: Lint
🔇 Additional comments (4)
apps/admin-x-activitypub/src/utils/handle-profile-click.ts (1)
9-9: LGTM! Clean refactor to use handle instead of profile.The change simplifies the data flow while maintaining the same functionality by extracting the handle from the actor properties.
apps/admin-x-activitypub/src/components/global/APAvatar.tsx (1)
72-72: LGTM! Simplified modal show call.The change efficiently reuses the pre-computed handle variable and removes the unnecessary object wrapper, maintaining consistency with the new modal interface.
apps/admin-x-activitypub/src/components/modals/ViewProfileModal.tsx (1)
219-221: LGTM! Clean interface simplification.The props interface has been simplified to accept just the handle and optional callbacks, making the component's contract clearer and more focused.
apps/admin-x-activitypub/src/components/Profile.tsx (1)
180-180: LGTM! The simplified modal show call aligns with the refactoring goals.The change standardizes the profile modal loading pattern by directly passing the handle, which aligns with the transition from
profilestoaccounts.Let's verify that this pattern is consistently applied across the codebase:
✅ Verification successful
Verified: Modal call correctly matches component interface
The change is consistent with the ViewProfileModal implementation, which expects a
handleprop of type string. The simplified modal show call aligns perfectly with the component's interface and the codebase's refactoring goals.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for any remaining instances of profile object being passed to ViewProfileModal # Expect: No instances of passing profile object to ViewProfileModal.show # Search for ViewProfileModal.show calls rg "ViewProfileModal.*show.*profile:" apps/admin-x-activitypub/Length of output: 65
Script:
#!/bin/bash # Search for all ViewProfileModal.show calls echo "=== ViewProfileModal.show calls ===" rg "ViewProfileModal.*show" apps/admin-x-activitypub/ # Search for ViewProfileModal component definition echo -e "\n=== ViewProfileModal component definition ===" ast-grep --pattern 'const ViewProfileModal = $_' # Search for any remaining profile prop types or interfaces echo -e "\n=== Profile related types ===" rg "interface.*Profile|type.*Profile" apps/admin-x-activitypub/Length of output: 1961
Script:
#!/bin/bash # Search for NiceModal.show calls in Profile.tsx echo "=== Modal show calls in Profile.tsx ===" rg "NiceModal\.show" apps/admin-x-activitypub/src/components/Profile.tsx -A 1 # Check ViewProfileModal props and implementation echo -e "\n=== ViewProfileModal implementation ===" rg "interface ViewProfileModalProps|const ViewProfileModal" -A 3 apps/admin-x-activitypub/src/components/modals/ViewProfileModal.tsxLength of output: 678
no refs
Changed profile modal to always remote load in
admin-x-activitypubinstead of both accepting an object or a string. This will allow for easier refactoring of the modal when we switch this area of the app to useaccountsinstead ofprofilesSummary by CodeRabbit
Release Notes
Refactor
handledirectly instead of nested profile objectsBug Fixes
The changes focus on standardizing how profile information is handled and displayed throughout the application, making the code more straightforward and maintainable.