36 lines
709 B
TypeScript
36 lines
709 B
TypeScript
import { DoseStatus } from '../types';
|
|
|
|
export interface DoseStatusParams {
|
|
takenAt?: string;
|
|
snoozedUntil?: string;
|
|
scheduledTime: Date;
|
|
now: Date;
|
|
}
|
|
|
|
export const determineDoseStatus = ({
|
|
takenAt,
|
|
snoozedUntil,
|
|
scheduledTime,
|
|
now,
|
|
}: DoseStatusParams): DoseStatus => {
|
|
if (takenAt) {
|
|
return DoseStatus.TAKEN;
|
|
}
|
|
|
|
if (snoozedUntil) {
|
|
const snoozeTime = new Date(snoozedUntil);
|
|
if (!Number.isNaN(snoozeTime.getTime())) {
|
|
if (snoozeTime.getTime() > now.getTime()) {
|
|
return DoseStatus.SNOOZED;
|
|
}
|
|
return DoseStatus.UPCOMING;
|
|
}
|
|
}
|
|
|
|
if (scheduledTime.getTime() < now.getTime()) {
|
|
return DoseStatus.MISSED;
|
|
}
|
|
|
|
return DoseStatus.UPCOMING;
|
|
};
|