Implement Notifications and Pad Tracking Enhancements

This commit is contained in:
2026-01-08 15:46:28 -06:00
parent 9ae77e7ab0
commit 512577b092
19 changed files with 3059 additions and 1576 deletions

View File

@@ -27,6 +27,9 @@ enum MoodLevel {
/// Flow intensity for period days
@HiveType(typeId: 4)
enum FlowIntensity {
@HiveField(4)
none, // No flow / Precautionary
@HiveField(0)
spotting,
@@ -166,7 +169,8 @@ class CycleEntry extends HiveObject {
String? husbandNotes; // Separate notes for husband
@HiveField(29)
bool? intimacyProtected; // null = no selection, true = protected, false = unprotected
bool?
intimacyProtected; // null = no selection, true = protected, false = unprotected
@HiveField(30, defaultValue: false)
bool usedPantyliner;
@@ -174,6 +178,9 @@ class CycleEntry extends HiveObject {
@HiveField(31, defaultValue: 0)
int pantylinerCount;
@HiveField(32)
String? prayerRequest;
CycleEntry({
required this.id,
required this.date,
@@ -207,6 +214,7 @@ class CycleEntry extends HiveObject {
this.husbandNotes,
this.usedPantyliner = false,
this.pantylinerCount = 0,
this.prayerRequest,
});
List<bool> get _symptomsList => [
@@ -271,6 +279,7 @@ class CycleEntry extends HiveObject {
String? husbandNotes,
bool? usedPantyliner,
int? pantylinerCount,
String? prayerRequest,
}) {
return CycleEntry(
id: id ?? this.id,
@@ -292,7 +301,8 @@ class CycleEntry extends HiveObject {
hasInsomnia: hasInsomnia ?? this.hasInsomnia,
basalBodyTemperature: basalBodyTemperature ?? this.basalBodyTemperature,
cervicalMucus: cervicalMucus ?? this.cervicalMucus,
ovulationTestPositive: ovulationTestPositive ?? this.ovulationTestPositive,
ovulationTestPositive:
ovulationTestPositive ?? this.ovulationTestPositive,
notes: notes ?? this.notes,
cravings: cravings ?? this.cravings,
sleepHours: sleepHours ?? this.sleepHours,
@@ -305,6 +315,7 @@ class CycleEntry extends HiveObject {
husbandNotes: husbandNotes ?? this.husbandNotes,
usedPantyliner: usedPantyliner ?? this.usedPantyliner,
pantylinerCount: pantylinerCount ?? this.pantylinerCount,
prayerRequest: prayerRequest ?? this.prayerRequest,
);
}
}
@@ -345,6 +356,8 @@ extension MoodLevelExtension on MoodLevel {
extension FlowIntensityExtension on FlowIntensity {
String get label {
switch (this) {
case FlowIntensity.none:
return 'No Flow';
case FlowIntensity.spotting:
return 'Spotting';
case FlowIntensity.light:
@@ -410,11 +423,7 @@ extension CyclePhaseExtension on CyclePhase {
case CyclePhase.ovulation:
return [AppColors.lavender, AppColors.ovulationPhase, AppColors.rose];
case CyclePhase.luteal:
return [
AppColors.lutealPhase,
AppColors.lavender,
AppColors.blushPink
];
return [AppColors.lutealPhase, AppColors.lavender, AppColors.blushPink];
}
}