Fix platform-agnostic community filtering logic

Enhanced the community matching logic in /api/posts to work for all platforms by using platform-agnostic matching rules:

1. Exact source match (source == community)
2. Platform match (platform == community)
3. Partial source match (substring)
4. Partial post ID match (substring)

This resolves the issue where users with empty communities couldn't see posts and works equally well for Reddit, HackerNews, Lobsters, GitHub, etc.

🤖 Generated with Claude Code

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

11
app.py
View File

@@ -452,15 +452,22 @@ 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 (platform-agnostic):
# 1. Exact source match (e.g., source="programming", community="programming")
# 2. Platform match (e.g., platform="hackernews", community="hackernews")
# 3. Partial match in source (e.g., source="programming", community="program")
# 4. Partial match in post ID (e.g., id="reddit_programming_123", community="programming")
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)):
matches_community = True matches_community = True
break break