refactor: decompose frontend state and medication dialog flows

This commit is contained in:
Daniel Volz
2026-03-27 06:50:19 +01:00
committed by GitHub
parent b58c4fe5bb
commit f46043970f
28 changed files with 2450 additions and 1613 deletions
@@ -0,0 +1,29 @@
export function toggleDateInSet(previous: Set<string>, dateStr: string): Set<string> {
const next = new Set(previous);
if (next.has(dateStr)) {
next.delete(dateStr);
} else {
next.add(dateStr);
}
return next;
}
export function resolveCollapsedState(
isAutoCollapsed: boolean,
dateStr: string,
manuallyExpandedDays: Set<string>,
manuallyCollapsedDays: Set<string>
): boolean {
if (isAutoCollapsed) {
return !manuallyExpandedDays.has(dateStr);
}
return manuallyCollapsedDays.has(dateStr);
}
export function countTakenDoseIds(doseIds: string[], isDoseTaken: (doseId: string) => boolean): number {
return doseIds.filter((id) => isDoseTaken(id)).length;
}
export function areAllDoseIdsTaken(doseIds: string[], isDoseTaken: (doseId: string) => boolean): boolean {
return doseIds.length > 0 && doseIds.every((id) => isDoseTaken(id));
}