diff --git a/backend/routes/friends.py b/backend/routes/friends.py index 8db5701..ccb9b72 100644 --- a/backend/routes/friends.py +++ b/backend/routes/friends.py @@ -277,6 +277,25 @@ async def get_activity(user=Depends(get_current_user)): LIMIT 15 """, friend_ids).fetchall() + # Forum-Beiträge der Freunde (öffentliche Threads) + forum_rows = conn.execute(f""" + SELECT + 'forum' AS type, + ft.id AS entry_id, + u.id AS user_id, + u.name AS user_name, + u.avatar_url, + NULL AS dog_name, + NULL AS dog_foto, + ft.titel AS text, + ft.created_at + FROM forum_threads ft + JOIN users u ON u.id = ft.user_id + WHERE ft.user_id IN ({ph}) + ORDER BY ft.created_at DESC + LIMIT 15 + """, friend_ids).fetchall() + # Neue Hunde (angelegt in den letzten 30 Tagen) new_dog_rows = conn.execute(f""" SELECT @@ -300,6 +319,7 @@ async def get_activity(user=Depends(get_current_user)): "health": "heart", "walk": "paw-print", "new_dog": "dog", + "forum": "push-pin", } _TEXT = { "health": "Hat einen Gesundheitseintrag hinzugefügt", @@ -307,7 +327,7 @@ async def get_activity(user=Depends(get_current_user)): } items = [] - for row in [*diary_rows, *health_rows, *walk_rows, *new_dog_rows]: + for row in [*diary_rows, *health_rows, *walk_rows, *forum_rows, *new_dog_rows]: d = dict(row) t = d["type"] items.append({ diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 031ce33..8e46bc5 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '220'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '221'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const App = (() => { diff --git a/backend/static/js/pages/friends.js b/backend/static/js/pages/friends.js index da6a40b..50bd5b3 100644 --- a/backend/static/js/pages/friends.js +++ b/backend/static/js/pages/friends.js @@ -208,6 +208,7 @@ window.Page_friends = (() => { { key: 'alle', label: 'Alle' }, { key: 'diary', label: 'Tagebuch' }, { key: 'walk', label: 'Gassi-Treffen' }, + { key: 'forum', label: 'Forum' }, { key: 'health', label: 'Gesundheit' }, { key: 'new_dog', label: 'Neuer Hund' }, ]; @@ -257,6 +258,8 @@ window.Page_friends = (() => { App.callModule('diary', 'openDetail', entryId); } else if (entryId && type === 'walk') { App.callModule('walks', 'openDetail', entryId); + } else if (entryId && type === 'forum') { + App.callModule('forum', 'openThread', entryId); } else { App.navigate(page); } @@ -268,6 +271,7 @@ window.Page_friends = (() => { diary: 'diary', health: 'health', walk: 'walks', + forum: 'forum', new_dog: null, };