Conversation
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Pull request overview
This PR implements a "followed activity" feature that allows users to view activity from users they follow. The feature integrates with the NGA forum's follow_v2.get_push_list API endpoint to fetch and display activities such as posted topics, posted replies, and favorited content.
Changes:
- Added protocol buffer definitions for Activity data model and ActivityList request/response
- Implemented backend service logic in Rust to fetch and parse followed activity from the NGA API
- Created Swift UI views for displaying the activity list and individual activity rows
- Added localization support in Chinese for the new feature
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| protos/Service.proto | Added ActivityListRequest/Response message definitions and integrated into AsyncRequest |
| protos/DataModel.proto | Defined Activity message with type enum and fields for activity data |
| logic/service/src/lib.rs | Added activity module to the service library |
| logic/service/src/dispatch/mod.rs | Added activity_list request handler to the async dispatcher |
| logic/service/src/dispatch/handlers_async.rs | Wired up activity_list handler to get_activity_list function |
| logic/service/src/activity.rs | Implemented complete activity parsing and API integration with tests |
| docs/nga-follow_v2-get_push_list.md | Comprehensive API documentation with examples |
| app/Shared/Views/UserMenuView.swift | Added navigation link to followed activity list in user menu |
| app/Shared/Views/TopicSubjectView.swift | Changed default lineLimit from nil to 2 for consistency |
| app/Shared/Views/TopicRowView.swift | Refactored to use topic.read property and removed explicit lineLimit parameter |
| app/Shared/Views/TopicPostRowView.swift | Removed explicit lineLimit parameter, now uses default |
| app/Shared/Views/NotificationRowView.swift | Applied topicSubjectDimmed modifier for consistent styling |
| app/Shared/Views/FollowedActivityRowView.swift | New view component for rendering individual activity items |
| app/Shared/Views/FollowedActivityListView.swift | New view for displaying paginated list of followed activities |
| app/Shared/Utilities/PlusFeature.swift | Added followedActivity as a new Plus feature |
| app/Shared/Protos/Extensions.swift | Added Activity.TypeEnum extensions and Topic.read computed property |
| app/Shared/Localization/zh-Hans.lproj/Localizable.strings | Added Chinese translations for new feature strings |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| Type type = 2; | ||
| User actor = 3; | ||
| Topic topic = 4; | ||
| PostId post_id = 5; // pid=0 indicates topic. |
There was a problem hiding this comment.
Field number 6 is skipped in the Activity message (jumps from field 5 to field 7). This could be intentional if field 6 was reserved or removed, but it's unusual. Consider adding a comment explaining why field 6 is skipped, or use field 6 instead of field 7 for timestamp if this was unintentional.
| PostId post_id = 5; // pid=0 indicates topic. | |
| PostId post_id = 5; // pid=0 indicates topic. | |
| reserved 6; // Field 6 intentionally left unused (previously reserved/removed). |
| case .topicHistory: | ||
| "clock" | ||
| case .followedActivity: | ||
| "sparkles" |
There was a problem hiding this comment.
The icon for the followedActivity feature is set to "sparkles" here, but the UI in UserMenuView.swift and FollowedActivityListView.swift uses "dot.radiowaves.left.and.right". Consider using the same icon in both places for consistency, or verify that the difference is intentional.
| "sparkles" | |
| "dot.radiowaves.left.and.right" |
No description provided.