feat: add granular notification settings for email and Shoutrrr reminders

This commit is contained in:
Daniel Volz
2025-12-21 09:52:48 +01:00
parent f06904f8ae
commit 221811ed7c
5 changed files with 545 additions and 207 deletions
@@ -202,12 +202,12 @@ MedAssist Medication Planner`;
async function checkAndSendIntakeReminders(logger: { info: (msg: string) => void; error: (msg: string) => void }): Promise<void> {
const settings = loadNotificationSettings();
// Check if any notifications are enabled
const emailEnabled = settings.emailEnabled && settings.notificationEmail;
const shoutrrrEnabled = settings.shoutrrrEnabled && settings.shoutrrrUrl;
// Check if any intake reminder notifications are enabled (granular check)
const emailEnabled = settings.emailEnabled && settings.notificationEmail && settings.emailIntakeReminders;
const shoutrrrEnabled = settings.shoutrrrEnabled && settings.shoutrrrUrl && settings.shoutrrrIntakeReminders;
if (!emailEnabled && !shoutrrrEnabled) {
return; // No notifications enabled, skip silently
return; // No intake reminder notifications enabled, skip silently
}
// Get all medications with intake reminders enabled
@@ -247,7 +247,7 @@ async function checkAndSendIntakeReminders(logger: { info: (msg: string) => void
let emailSuccess = false;
let shoutrrrSuccess = false;
// Send email if enabled
// Send email if enabled for intake reminders
if (emailEnabled) {
const result = await sendIntakeReminderEmail(settings.notificationEmail, newReminders);
emailSuccess = result.success;
@@ -258,7 +258,7 @@ async function checkAndSendIntakeReminders(logger: { info: (msg: string) => void
}
}
// Send Shoutrrr notification if enabled
// Send Shoutrrr notification if enabled for intake reminders
if (shoutrrrEnabled) {
const title = `Medication Reminder in ${REMINDER_MINUTES_BEFORE} min`;
const message = newReminders
+9 -4
View File
@@ -17,6 +17,11 @@ type NotificationSettings = {
highStockDays: number;
shoutrrrEnabled: boolean;
shoutrrrUrl: string;
// Granular notification settings
emailStockReminders: boolean;
emailIntakeReminders: boolean;
shoutrrrStockReminders: boolean;
shoutrrrIntakeReminders: boolean;
};
type ReminderState = {
@@ -340,12 +345,12 @@ Automatic reminder from MedAssist`;
async function checkAndSendReminder(logger: { info: (msg: string) => void; error: (msg: string) => void }): Promise<void> {
const settings = loadNotificationSettings();
// Check if any notifications are enabled
const emailEnabled = settings.emailEnabled && settings.notificationEmail;
const shoutrrrEnabled = settings.shoutrrrEnabled && settings.shoutrrrUrl;
// Check if any stock reminder notifications are enabled (granular check)
const emailEnabled = settings.emailEnabled && settings.notificationEmail && settings.emailStockReminders;
const shoutrrrEnabled = settings.shoutrrrEnabled && settings.shoutrrrUrl && settings.shoutrrrStockReminders;
if (!emailEnabled && !shoutrrrEnabled) {
logger.info("[Reminder] No notifications enabled");
logger.info("[Reminder] No stock reminder notifications enabled");
return;
}