Revert "Add student birthday tracking with celebration banners and admin notification; v1.1.31"

This reverts commit c0a79b9ed0.
This commit is contained in:
nmemmert
2026-08-10 08:43:53 -04:00
parent c0a79b9ed0
commit c56e468115
7 changed files with 5 additions and 251 deletions
+1 -59
View File
@@ -1,8 +1,7 @@
import { Resend } from 'resend'
import { state } from './state.js'
import { queuePodcastChecklistWrite, queueCalendarEventsWrite, queueStudyUsersWrite } from './data.js'
import { queuePodcastChecklistWrite, queueCalendarEventsWrite } from './data.js'
import { DEFAULT_RESEND_FROM, DEFAULT_RESEND_TO } from './config.js'
import { celebrationDateForYear } from './helpers.js'
function toDateKey(date) {
return date.toISOString().slice(0, 10)
@@ -65,63 +64,6 @@ async function checkReminders() {
}
if (changed) queueCalendarEventsWrite()
}
// Birthdays — fire on the student's celebration day, once per calendar year
const users = state.studyUsers ?? []
let birthdayUsersChanged = false
const todayYear = new Date().getUTCFullYear()
const birthdayKids = []
for (const user of users) {
if (!user.birthdayMonth || !user.birthdayDay) continue
const celebDate = celebrationDateForYear(user, todayYear)
if (!celebDate) continue
if (todayKey !== celebDate) continue
if (user.birthdayEmailSentYear === todayYear) continue
birthdayKids.push({ name: user.displayName || user.username, birthdayMonth: user.birthdayMonth, birthdayDay: user.birthdayDay, hasAlternate: Boolean(user.birthdayAlternateMonth) })
user.birthdayEmailSentYear = todayYear
birthdayUsersChanged = true
}
if (birthdayKids.length > 0) {
await sendBirthdayNotificationEmail(birthdayKids)
if (birthdayUsersChanged) queueStudyUsersWrite()
}
}
async function sendBirthdayNotificationEmail(kids) {
if (!process.env.RESEND_API_KEY) return
try {
const resend = new Resend(process.env.RESEND_API_KEY)
const from = process.env.RESEND_FROM ?? DEFAULT_RESEND_FROM
const to = process.env.RESEND_TO ?? DEFAULT_RESEND_TO
const MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December']
const lines = kids.map(k => {
const bdayStr = `${MONTHS[k.birthdayMonth - 1]} ${k.birthdayDay}`
const alt = k.hasAlternate ? ' (celebrating on alternate date)' : ''
return `<li style="margin-bottom:6px"><strong>${k.name}</strong> — birthday: ${bdayStr}${alt}</li>`
}).join('')
const subject = kids.length === 1
? `🎂 Birthday today: ${kids[0].name}`
: `🎂 ${kids.length} student birthdays today`
const html = `
<div style="font-family:system-ui,sans-serif;max-width:540px;margin:0 auto;color:#222">
<h2 style="color:#c8860a;margin-bottom:4px">🎂 Student Birthday Celebration</h2>
<p>The following student${kids.length > 1 ? 's have' : ' has'} a birthday celebration today — consider sending a special message or acknowledging them in your study community!</p>
<ul style="padding-left:1.2em">${lines}</ul>
<hr style="border:none;border-top:1px solid #eee;margin:16px 0">
<p style="color:#777;font-size:0.85rem">To edit birthday info, open the Study Users panel in your admin settings.</p>
</div>
`
const { error } = await resend.emails.send({ from, to, subject, html })
if (error) console.error('[birthday] send error:', error)
else console.log(`[birthday] notification sent for ${kids.map(k => k.name).join(', ')}`)
} catch (err) {
console.error('[birthday] send exception:', err)
}
}
const TYPE_ICONS = { episode: '📅', general: '📌', recording: '🎙️', social: '📱', task: '✅' }