Skip to content

feat: followed activity#307

Open
BugenZhao wants to merge 5 commits intomainfrom
bz/enormous-pike
Open

feat: followed activity#307
BugenZhao wants to merge 5 commits intomainfrom
bz/enormous-pike

Conversation

@BugenZhao
Copy link
Owner

No description provided.

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>
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copilot AI review requested due to automatic review settings January 18, 2026 09:23
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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).

Copilot uses AI. Check for mistakes.
case .topicHistory:
"clock"
case .followedActivity:
"sparkles"
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
"sparkles"
"dot.radiowaves.left.and.right"

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants