fix: KoePi Admin-Testbutton sendet Pushover nur noch an den Admin selbst, echter Cron bleibt fuer alle
This commit is contained in:
@@ -425,11 +425,18 @@ function formatOfferMessage(offers) {
|
||||
.join('\n');
|
||||
}
|
||||
|
||||
async function sendKoepiPushover(offers) {
|
||||
const recipients = db.prepare(`
|
||||
SELECT user_key, app_token FROM pushover_settings
|
||||
WHERE user_key IS NOT NULL AND app_token IS NOT NULL
|
||||
`).all();
|
||||
// onlyUserId gesetzt: nur an diesen einen Nutzer schicken (z.B. Admin-Testklick),
|
||||
// sonst an alle Nutzer mit hinterlegtem Pushover (echter Tages-Cron)
|
||||
async function sendKoepiPushover(offers, onlyUserId = null) {
|
||||
const recipients = onlyUserId
|
||||
? db.prepare(`
|
||||
SELECT user_key, app_token FROM pushover_settings
|
||||
WHERE user_id = ? AND user_key IS NOT NULL AND app_token IS NOT NULL
|
||||
`).all(onlyUserId)
|
||||
: db.prepare(`
|
||||
SELECT user_key, app_token FROM pushover_settings
|
||||
WHERE user_key IS NOT NULL AND app_token IS NOT NULL
|
||||
`).all();
|
||||
const message = formatOfferMessage(offers);
|
||||
for (const r of recipients) {
|
||||
try {
|
||||
@@ -467,9 +474,10 @@ async function refreshOffersOnly() {
|
||||
}
|
||||
}
|
||||
|
||||
// Wird täglich um 06:00 vom Scheduler in index.js aufgerufen.
|
||||
// forceNotify=true (manueller Admin-Test): Pushover wird auch ohne Änderung verschickt.
|
||||
async function runDailyCheck(forceNotify = false) {
|
||||
// Wird täglich um 06:00 vom Scheduler in index.js aufgerufen (ohne onlyUserId
|
||||
// → geht an alle). forceNotify=true (manueller Admin-Test): Pushover wird auch
|
||||
// ohne Änderung verschickt; onlyUserId gesetzt: nur an diesen einen Nutzer.
|
||||
async function runDailyCheck(forceNotify = false, onlyUserId = null) {
|
||||
try {
|
||||
const { offers } = await scrapeMarktguru(true);
|
||||
const currentSig = offerSignature(offers);
|
||||
@@ -482,10 +490,10 @@ async function runDailyCheck(forceNotify = false) {
|
||||
return { changed: false, sent: false, offerCount: offers.length };
|
||||
}
|
||||
|
||||
await sendKoepiPushover(offers);
|
||||
await sendKoepiPushover(offers, onlyUserId);
|
||||
db.prepare('INSERT OR REPLACE INTO admin_settings (key, value) VALUES (?, ?)')
|
||||
.run(KOEPI_SETTINGS_KEY, currentSig);
|
||||
console.log(`🍺 KöPi-Check: ${offers.length} Angebot(e)${changed ? ' geändert' : ' (Test, unverändert)'} – Pushover versendet.`);
|
||||
console.log(`🍺 KöPi-Check: ${offers.length} Angebot(e)${changed ? ' geändert' : ' (Test, unverändert)'} – Pushover versendet${onlyUserId ? ` (nur an User ${onlyUserId})` : ''}.`);
|
||||
mqttClient.publishKoepiState({ offers, changed });
|
||||
return { changed, sent: true, offerCount: offers.length };
|
||||
} catch (e) {
|
||||
@@ -514,11 +522,12 @@ router.post('/clear-cache', authenticate, (req, res) => {
|
||||
res.json({ ok: true });
|
||||
});
|
||||
|
||||
// Manueller Test des Tages-Checks (Admin) — sendet Pushover auch ohne echte Änderung
|
||||
// Manueller Test des Tages-Checks (Admin) — sendet Pushover auch ohne echte
|
||||
// Änderung, aber NUR an den Admin selbst (nicht an alle Nutzer)
|
||||
router.post('/run-daily-check', authenticate, async (req, res) => {
|
||||
if (req.user?.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' });
|
||||
try {
|
||||
const result = await runDailyCheck(true);
|
||||
const result = await runDailyCheck(true, req.user.id);
|
||||
if (result.error) return res.status(500).json({ error: result.error });
|
||||
res.json(result);
|
||||
} catch(e) { res.status(500).json({ error: e.message }); }
|
||||
|
||||
Reference in New Issue
Block a user