diff --git a/backend/src/tools/media/routes.js b/backend/src/tools/media/routes.js index 82edddc..5ad5e81 100644 --- a/backend/src/tools/media/routes.js +++ b/backend/src/tools/media/routes.js @@ -960,6 +960,31 @@ router.post('/favorites/:id/acknowledge', authenticate, requireAdmin, (req, res) } catch {} }); +// POST /favorites/:id/unacknowledge – Admin: Quittierung rückgängig machen +router.post('/favorites/:id/unacknowledge', authenticate, requireAdmin, (req, res) => { + const fav = db.prepare('SELECT * FROM movie_favorites WHERE id=?').get(req.params.id); + if (!fav) return res.status(404).json({ error: 'Nicht gefunden' }); + db.prepare('UPDATE movie_favorites SET acknowledged=0, acknowledged_at=NULL, user_notified=0 WHERE id=?').run(fav.id); + res.json({ ok: true }); + // Pushover an den User — Quittierung zurückgezogen (fire & forget) + try { + const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(fav.user_id); + if (poCfg?.app_token && poCfg?.user_key) { + fetch('https://api.pushover.net/1/messages.json', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + token: poCfg.app_token, + user: poCfg.user_key, + title: '↩ Favorit zurückgezogen', + message: `Die Bestätigung für "${fav.title}" wurde vom Admin zurückgezogen.`, + priority: 0, + }), + }).catch(() => {}); + } + } catch {} +}); + // Admin: ALLE verfügbaren Watch-Provider für Deutschland live von TMDb holen // Admin: Streaming-Top10-Cache leeren (z.B. nach Logik-Änderungen) // Debug: rohe TMDb-Treffer pro Anbieter/Schwelle prüfen diff --git a/frontend/src/tools/media.jsx b/frontend/src/tools/media.jsx index 98951c6..7d104c8 100644 --- a/frontend/src/tools/media.jsx +++ b/frontend/src/tools/media.jsx @@ -784,7 +784,7 @@ function FavoritenKalender({ onOpenModal }) { {!!f.acknowledged && } - {!f.acknowledged && ( + {!f.acknowledged ? ( + ) : ( + )} ))}