fix(notifications): include baby name in all push/browser notification titles and bodies
This commit is contained in:
@@ -510,9 +510,9 @@ export default function DashboardPage() {
|
||||
|
||||
useEffect(() => {
|
||||
const lastFeed = events.find((e) => e.type === "BREASTFEED" || e.type === "BOTTLE");
|
||||
checkFeedAlert(lastFeed ? new Date(lastFeed.startedAt) : null, getThresholds());
|
||||
checkFeedAlert(lastFeed ? new Date(lastFeed.startedAt) : null, getThresholds(), baby?.name);
|
||||
const id = setInterval(() => {
|
||||
checkFeedAlert(lastFeed ? new Date(lastFeed.startedAt) : null, getThresholds());
|
||||
checkFeedAlert(lastFeed ? new Date(lastFeed.startedAt) : null, getThresholds(), baby?.name);
|
||||
}, 5 * 60 * 1000);
|
||||
return () => clearInterval(id);
|
||||
}, [events]);
|
||||
|
||||
@@ -73,7 +73,7 @@ export async function POST(req: Request) {
|
||||
const message = [`🥛 Stock lait — ${babyName}`, "", ...lines].join("\n");
|
||||
for (const user of users) {
|
||||
if (user.pushoverUserKey) {
|
||||
await sendPushover(user.pushoverUserKey, message, `🥛 Alerte stock lait`);
|
||||
await sendPushover(user.pushoverUserKey, message, `🥛 Lait — ${babyName}`);
|
||||
sent++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ export async function POST() {
|
||||
const message = `Rappel médicament : ${reminder.name}${dosePart} pour ${reminder.baby.name}`;
|
||||
|
||||
try {
|
||||
await notifyFamilyFeedAlert(reminder.baby.familyId, message);
|
||||
await notifyFamilyFeedAlert(reminder.baby.familyId, message, `💊 ${reminder.name} — ${reminder.baby.name}`);
|
||||
await prisma.medicationReminder.update({
|
||||
where: { id: reminder.id },
|
||||
data: { lastSentAt: now },
|
||||
|
||||
@@ -36,15 +36,16 @@ export function sendNotification(title: string, body: string): void {
|
||||
});
|
||||
}
|
||||
|
||||
export function checkFeedAlert(lastFeedAt: Date | null, thresholds: NotificationThresholds): void {
|
||||
export function checkFeedAlert(lastFeedAt: Date | null, thresholds: NotificationThresholds, babyName?: string): void {
|
||||
if (!thresholds.enabled || !lastFeedAt) return;
|
||||
const hoursSince = (Date.now() - lastFeedAt.getTime()) / 3600000;
|
||||
if (hoursSince >= thresholds.feedAlertHours) {
|
||||
const h = Math.floor(hoursSince);
|
||||
const m = Math.floor((hoursSince - h) * 60);
|
||||
const who = babyName ? `${babyName} n'a` : "Bébé n'a";
|
||||
sendNotification(
|
||||
"🍼 Rappel repas — Grow",
|
||||
`Dernier repas il y a ${h}h${m.toString().padStart(2, "0")}. Heure de nourrir bébé ?`
|
||||
`🍼 Rappel repas — ${babyName ?? "Grow"}`,
|
||||
`${who} pas mangé depuis ${h}h${m.toString().padStart(2, "0")}. Heure de la prochaine tétée ?`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,12 +20,12 @@ export async function sendPushover(userKey: string, message: string, title = "Gr
|
||||
}
|
||||
}
|
||||
|
||||
export async function notifyFamilyFeedAlert(familyId: string, message: string): Promise<void> {
|
||||
export async function notifyFamilyFeedAlert(familyId: string, message: string, title?: string): Promise<void> {
|
||||
const users = await prisma.user.findMany({
|
||||
where: { familyId, pushoverUserKey: { not: null } },
|
||||
select: { pushoverUserKey: true },
|
||||
});
|
||||
await Promise.allSettled(
|
||||
users.map((u) => sendPushover(u.pushoverUserKey!, message))
|
||||
users.map((u) => sendPushover(u.pushoverUserKey!, message, title ?? "Grow"))
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user