36 lines
2 KiB
Markdown
36 lines
2 KiB
Markdown
# Feed Reactions Fix - Implementation Summary
|
|
|
|
## Status: COMPLETE & DEPLOYED ✅
|
|
|
|
### 1. Issue Description
|
|
- **Problem**: Reactions were not displaying on the "Following" (Home) and "Profile" feeds. The "Postcard" UI (specifically the compact method) was defaulting to the "Add Reaction" button because no reaction data was being returned by the API for these lists.
|
|
- **Root Cause**: The SQL queries for `GetFeed` and `GetPostsByAuthor` in the backend were not aggregating reaction data (counts and user choices), unlike the single-post endpoint.
|
|
|
|
### 2. Implementation Details (Backend)
|
|
- **File**: `internal/repository/post_repository.go`
|
|
- **Changes**:
|
|
- Modified `GetFeed` SQL query to include a correlated subquery fetching `jsonb_object_agg(emoji, count)` for `reaction_counts`.
|
|
- Modified `GetPostsByAuthor` SQL query to do the same.
|
|
- Added logic to fetch `my_reactions` (the current user's votes) for both feeds.
|
|
- Updated the Go `Scan` destinations to populate the `Reactions` and `MyReactions` fields in the `Post` model.
|
|
- **Correction**: Also fixed a missing `allow_chain` and `visibility` selection in the `GetPostsByAuthor` query, ensuring consistency across the app.
|
|
|
|
### 3. Frontend logic (Verified)
|
|
- **Widget**: `sojornPostCard` -> `PostActions` -> `ReactionsDisplay`
|
|
- **Logic**: The `ReactionsDisplay` widget in `compact` mode (used in feeds) is designed to:
|
|
1. Show the user's reaction if they voted.
|
|
2. Else, show the "Most Used" reaction from the community.
|
|
3. Else (if valid data but count is 0), show the "Add" button.
|
|
- **Result**: Now that the backend provides the data (Case 1 or 2), the UI will correctly display the reaction chips instead of just the "+" button.
|
|
|
|
### 4. Deployment
|
|
- **Server**: `194.238.28.122`
|
|
- **Action**:
|
|
- Compiled `sojorn-api-linux` locally.
|
|
- Uploaded to `/opt/sojorn/bin/api` via `scp` (user: `patrick`).
|
|
- Restarted `sojorn-api` service via `systemctl`.
|
|
- **Status**: API is active and serving the new queries.
|
|
|
|
### 5. Next Steps
|
|
- **User Action**: Pull-to-refresh the feed in the Sojorn app to see the changes.
|