fix: use per-intake reminder setting as single source of truth (#384)

- Filter intakes by per-intake intakeRemindersEnabled instead of falling
  back to medication-level setting (fixes #383)
- Add SMTP delivery validation with accepted/rejected recipient checks
- Enhance email success logging with recipient, messageId, SMTP response
- Simplify MedDetailModal reminder icon logic to match backend behavior
- Sync lockfile versions to 1.18.2
This commit is contained in:
Daniel Volz
2026-03-06 19:50:45 +01:00
committed by GitHub
parent de1a508e52
commit 30c97e2f0d
4 changed files with 69 additions and 36 deletions
+4 -6
View File
@@ -268,12 +268,10 @@ export function MedDetailModal({
every: blister.every,
start: blister.start,
takenBy: null,
intakeRemindersEnabled: selectedMed.intakeRemindersEnabled ?? false,
intakeRemindersEnabled: false,
intakeUnit: null,
}));
const hasAnyIntakeReminder = scheduleIntakes.some(
(intake) => (intake.intakeRemindersEnabled ?? selectedMed.intakeRemindersEnabled ?? false) === true
);
const hasAnyIntakeReminder = scheduleIntakes.some((intake) => intake.intakeRemindersEnabled === true);
const normalizeBlisterStock = (nextFull: number, nextPartial: number, nextLoose: number) => {
let normalizedFull = Math.max(0, nextFull);
let normalizedPartial = Math.max(0, nextPartial);
@@ -966,7 +964,7 @@ export function MedDetailModal({
<div className="med-detail-section">
<h3>
{t("modal.intakeSchedule")}{" "}
{(selectedMed.intakeRemindersEnabled || hasAnyIntakeReminder) && (
{hasAnyIntakeReminder && (
<span className="reminder-icon info-tooltip" data-tooltip={t("tooltips.intakeReminders")}>
<Bell size={14} aria-hidden="true" />
</span>
@@ -977,7 +975,7 @@ export function MedDetailModal({
const hasPerIntakeTakenBy = !!intake.takenBy;
const personCount = Math.max(1, selectedMed.takenBy?.length ?? 0);
const totalUsage = hasPerIntakeTakenBy ? intake.usage : intake.usage * personCount;
const showIntakeBell = intake.intakeRemindersEnabled ?? selectedMed.intakeRemindersEnabled ?? false;
const showIntakeBell = intake.intakeRemindersEnabled === true;
return (
<div