From eef787cc725bc64b8f06df53d88047ee2dad4ff8 Mon Sep 17 00:00:00 2001 From: rene Date: Sun, 19 Apr 2026 10:22:13 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20Benachrichtigungen=20=C3=B6ffnen=20direk?= =?UTF-8?q?t=20das=20Ziel-Item?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - forum_reply → öffnet direkt den Forum-Thread (openThread exposed) - walk_invite → öffnet direkt das Gassi-Treffen (openDetail exposed) - poison_alert → öffnet direkt den Giftköder-Eintrag (openDetail exposed) - chat_message → öffnet direkt den Chat-Thread (war schon vorhanden) - _execNav nutzt nav.data statt nav.data?.field für konsistentes Parsing --- backend/static/js/app.js | 2 +- backend/static/js/pages/forum.js | 2 +- backend/static/js/pages/notifications.js | 52 ++++++++++++++++++------ backend/static/js/pages/poison.js | 2 +- backend/static/js/pages/walks.js | 2 +- backend/static/sw.js | 2 +- 6 files changed, 45 insertions(+), 17 deletions(-) diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 718b473..a70ea69 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 = '212'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '213'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const App = (() => { diff --git a/backend/static/js/pages/forum.js b/backend/static/js/pages/forum.js index 641e7dd..a6dd3bd 100644 --- a/backend/static/js/pages/forum.js +++ b/backend/static/js/pages/forum.js @@ -1009,6 +1009,6 @@ window.Page_forum = (() => { document.body.appendChild(lb); } - return { init, refresh, onDogChange, openNew }; + return { init, refresh, onDogChange, openNew, openThread: _openThread }; })(); diff --git a/backend/static/js/pages/notifications.js b/backend/static/js/pages/notifications.js index 6170127..7ba6112 100644 --- a/backend/static/js/pages/notifications.js +++ b/backend/static/js/pages/notifications.js @@ -63,22 +63,35 @@ window.Page_notifications = (() => { : () => App.navigate('chat'), }; - case 'friend_request': + case 'forum_reply': + case 'forum_mention': return { - page: 'friends', label: 'Freunde', - go: () => App.navigate('friends'), + page: 'forum', label: 'Forum', + go: d.id + ? () => App.callModule('forum', 'openThread', d.id) + : () => App.navigate('forum'), }; case 'walk_invite': return { page: 'walks', label: 'Gassi-Treffen', - go: () => App.navigate('walks'), + go: d.walk_id + ? () => App.callModule('walks', 'openDetail', d.walk_id) + : () => App.navigate('walks'), }; case 'poison_alert': return { page: 'poison', label: 'Giftköder-Alarm', - go: () => App.navigate('poison'), + go: d.id + ? () => App.callModule('poison', 'openDetail', { id: d.id }) + : () => App.navigate('poison'), + }; + + case 'friend_request': + return { + page: 'friends', label: 'Freunde', + go: () => App.navigate('friends'), }; case 'health_reminder': @@ -132,17 +145,32 @@ window.Page_notifications = (() => { /** Führt die kontextspezifische Navigation aus */ function _execNav(nav) { + const d = nav.data || {}; switch (nav.type) { case 'chat_message': - nav.data?.conversation_id - ? App.callModule('chat', '_openThread', nav.data.conversation_id) + d.conversation_id + ? App.callModule('chat', '_openThread', d.conversation_id) : App.navigate('chat'); break; - case 'friend_request': App.navigate('friends'); break; - case 'walk_invite': App.navigate('walks'); break; - case 'poison_alert': App.navigate('poison'); break; - case 'health_reminder':App.navigate('health'); break; - case 'milestone': App.navigate('diary'); break; + case 'forum_reply': + case 'forum_mention': + d.id + ? App.callModule('forum', 'openThread', d.id) + : App.navigate('forum'); + break; + case 'walk_invite': + d.walk_id + ? App.callModule('walks', 'openDetail', d.walk_id) + : App.navigate('walks'); + break; + case 'poison_alert': + d.id + ? App.callModule('poison', 'openDetail', { id: d.id }) + : App.navigate('poison'); + break; + case 'friend_request': App.navigate('friends'); break; + case 'health_reminder':App.navigate('health'); break; + case 'milestone': App.navigate('diary'); break; default: if (nav.page) App.navigate(nav.page); } diff --git a/backend/static/js/pages/poison.js b/backend/static/js/pages/poison.js index bb3ce04..491fb69 100644 --- a/backend/static/js/pages/poison.js +++ b/backend/static/js/pages/poison.js @@ -585,6 +585,6 @@ window.Page_poison = (() => { // ---------------------------------------------------------- // PUBLIC // ---------------------------------------------------------- - return { init, refresh, openNew }; + return { init, refresh, openNew, openDetail: _openDetail }; })(); diff --git a/backend/static/js/pages/walks.js b/backend/static/js/pages/walks.js index 9f6088d..f20e43e 100644 --- a/backend/static/js/pages/walks.js +++ b/backend/static/js/pages/walks.js @@ -952,6 +952,6 @@ window.Page_walks = (() => { }); } - return { init, refresh, onDogChange, openNew }; + return { init, refresh, onDogChange, openNew, openDetail: _openDetail }; })(); diff --git a/backend/static/sw.js b/backend/static/sw.js index 0bc11bd..bacdf1a 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -3,7 +3,7 @@ Offline-Cache + Push Notifications + Tile-Cache ============================================================ */ -const CACHE_VERSION = 'by-v235'; +const CACHE_VERSION = 'by-v236'; const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten