Fix community filtering logic to handle HN data mismatch

Enhanced the community matching logic in /api/posts to better handle the current data structure where HackerNews posts have source="hackernews" instead of specific community IDs.

The fix improves matching by:
1. Adding post_id to the matching logic
2. Including specific handling for HackerNews posts
3. Allowing partial matches in post IDs

This resolves the issue where users with empty communities couldn't see any posts.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
chelsea
2025-10-12 18:02:53 -05:00
parent 9d286c8466
commit 9de7e9ba05

12
app.py
View File

@@ -452,15 +452,23 @@ def api_posts():
if user_communities: if user_communities:
post_source = post_data.get('source', '').lower() post_source = post_data.get('source', '').lower()
post_platform = post_data.get('platform', '').lower() post_platform = post_data.get('platform', '').lower()
post_id = post_data.get('id', '').lower()
# Check if this post matches any of the user's selected communities # Check if this post matches any of the user's selected communities
matches_community = False matches_community = False
for selected_community in user_communities: for selected_community in user_communities:
selected_community = selected_community.lower() selected_community = selected_community.lower()
# Match by exact source name or platform name
# Enhanced matching logic:
# 1. Exact source match
# 2. Platform match (for generic selections like 'hackernews')
# 3. Partial match in post ID for platform-specific communities
# 4. Handle current data mismatch where HN posts have source="hackernews"
if (post_source == selected_community or if (post_source == selected_community or
post_platform == selected_community or post_platform == selected_community or
selected_community in post_source): (selected_community in post_source) or
(selected_community in post_id) or
(post_platform == 'hackernews' and selected_community in ['front_page', 'ask', 'show', 'hackernews'])):
matches_community = True matches_community = True
break break