diff --git a/server/api/news.post.js b/server/api/news.post.js index f2fddc6..e0e51c6 100644 --- a/server/api/news.post.js +++ b/server/api/news.post.js @@ -53,9 +53,13 @@ export default defineEventHandler(async (event) => { } await saveNews(newsEntry) if (!id && !newsEntry.isHidden) { - sendNewNewsPush(newsEntry).catch(error => { - console.error('News-Push konnte nicht gesendet werden:', error) - }) + sendNewNewsPush(newsEntry) + .then(result => { + console.info('News-Push Ergebnis:', { newsId: newsEntry.id, ...result }) + }) + .catch(error => { + console.error('News-Push konnte nicht gesendet werden:', error) + }) } return { diff --git a/server/utils/push-notifications.js b/server/utils/push-notifications.js index 39bb0d4..661766f 100644 --- a/server/utils/push-notifications.js +++ b/server/utils/push-notifications.js @@ -124,6 +124,10 @@ export async function sendNewNewsPush(news) { const accessToken = await getAccessToken(serviceAccount) const users = await readUsers() let sent = 0 + let failed = 0 + let removed = 0 + let recipients = 0 + let tokenCount = 0 let changed = false const title = 'Neue News' const body = String(news.title || 'Neue Nachricht vom Harheimer TC').slice(0, 120) @@ -139,7 +143,9 @@ export async function sendNewNewsPush(news) { if (isHiddenUser(user)) continue const settings = notificationSettingsForUser(user) if (!settings.newNews) continue + recipients += 1 const tokens = pushTokensForUser(user) + tokenCount += tokens.length const validTokens = [] for (const entry of tokens) { try { @@ -147,10 +153,12 @@ export async function sendNewNewsPush(news) { sent += 1 validTokens.push(entry) } catch (error) { + failed += 1 console.error('FCM News-Push fehlgeschlagen:', error.message) if (!/UNREGISTERED|NOT_FOUND|INVALID_ARGUMENT/.test(String(error.message))) { validTokens.push(entry) } else { + removed += 1 changed = true } } @@ -161,5 +169,5 @@ export async function sendNewNewsPush(news) { } } if (changed) await writeUsers(users) - return { sent, skipped: false } + return { sent, failed, removed, recipients, tokenCount, skipped: false } }