Skip to content

Commit eed0c14

Browse files
Merge pull request #231 from EthanJoyce/ej/dev-0602-meal-overview
ui: Add Carbs, Fat, Protein, overview to each meal
2 parents d0e8b7f + f4783b8 commit eed0c14

36 files changed

Lines changed: 461 additions & 133 deletions

lib/core/data/data_source/config_data_source.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ class ConfigDataSource {
100100
config?.save();
101101
}
102102

103+
Future<void> setConfigShowMealMacros(bool show) async {
104+
_log.fine('Updating config showMealMacros to $show');
105+
final config = _configBox.get(_configKey);
106+
config?.showMealMacros = show;
107+
config?.save();
108+
}
109+
103110
Future<void> setNotificationsEnabled(bool enabled) async {
104111
_log.fine('Updating config notificationsEnabled to $enabled');
105112
final config = _configBox.get(_configKey);

lib/core/data/dbo/config_dbo.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class ConfigDBO extends HiveObject {
3636
int? notificationMinute;
3737
@HiveField(13)
3838
String? selectedLocale;
39+
@HiveField(14)
40+
bool? showMealMacros;
3941

4042
ConfigDBO(
4143
this.hasAcceptedDisclaimer,
@@ -45,6 +47,7 @@ class ConfigDBO extends HiveObject {
4547
this.usesImperialUnits = false,
4648
this.userKcalAdjustment,
4749
this.showActivityTracking,
50+
this.showMealMacros,
4851
this.notificationsEnabled,
4952
this.notificationHour,
5053
this.notificationMinute,

lib/core/data/dbo/config_dbo.g.dart

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/core/data/repository/config_repository.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ class ConfigRepository {
6565
_configDataSource.setConfigShowActivityTracking(show);
6666
}
6767

68+
Future<void> setConfigShowMealMacros(bool show) async {
69+
_configDataSource.setConfigShowMealMacros(show);
70+
}
71+
6872
Future<void> setUserMacroPct(double carbs, double protein, double fat) async {
6973
_configDataSource.setConfigCarbGoalPct(carbs);
7074
_configDataSource.setConfigProteinGoalPct(protein);

lib/core/domain/entity/config_entity.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ConfigEntity extends Equatable {
1313
final double? userProteinGoalPct;
1414
final double? userFatGoalPct;
1515
final bool showActivityTracking;
16+
final bool showMealMacros;
1617
final bool notificationsEnabled;
1718
final int notificationHour;
1819
final int notificationMinute;
@@ -29,6 +30,7 @@ class ConfigEntity extends Equatable {
2930
this.userProteinGoalPct,
3031
this.userFatGoalPct,
3132
this.showActivityTracking = true,
33+
this.showMealMacros = true,
3234
this.notificationsEnabled = false,
3335
this.notificationHour = 8,
3436
this.notificationMinute = 0,
@@ -46,6 +48,7 @@ class ConfigEntity extends Equatable {
4648
userProteinGoalPct: dbo.userProteinGoalPct,
4749
userFatGoalPct: dbo.userFatGoalPct,
4850
showActivityTracking: dbo.showActivityTracking ?? true,
51+
showMealMacros: dbo.showMealMacros ?? true,
4952
notificationsEnabled: dbo.notificationsEnabled ?? false,
5053
notificationHour: dbo.notificationHour ?? 8,
5154
notificationMinute: dbo.notificationMinute ?? 0,
@@ -63,6 +66,7 @@ class ConfigEntity extends Equatable {
6366
userProteinGoalPct,
6467
userFatGoalPct,
6568
showActivityTracking,
69+
showMealMacros,
6670
notificationsEnabled,
6771
notificationHour,
6872
notificationMinute,

lib/core/domain/usecase/add_config_usecase.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ class AddConfigUsecase {
4848
_configRepository.setConfigShowActivityTracking(show);
4949
}
5050

51+
Future<void> setConfigShowMealMacros(bool show) async {
52+
_configRepository.setConfigShowMealMacros(show);
53+
}
54+
5155
Future<void> setNotificationsEnabled(bool enabled) async {
5256
_configRepository.setNotificationsEnabled(enabled);
5357
}

lib/features/diary/diary_page.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class _DiaryPageState extends State<DiaryPage> with WidgetsBindingObserver {
7070
context,
7171
state.trackedDayMap,
7272
state.usesImperialUnits,
73+
state.showMealMacros,
7374
);
7475
}
7576
return const SizedBox();
@@ -93,6 +94,7 @@ class _DiaryPageState extends State<DiaryPage> with WidgetsBindingObserver {
9394
BuildContext context,
9495
Map<String, TrackedDayEntity> trackedDaysMap,
9596
bool usesImperialUnits,
97+
bool showMealMacros,
9698
) {
9799
return ListView(
98100
children: [
@@ -128,6 +130,7 @@ class _DiaryPageState extends State<DiaryPage> with WidgetsBindingObserver {
128130
onEditIntake: _onEditIntakeItem,
129131
onEditActivity: _onEditActivityItem,
130132
usesImperialUnits: usesImperialUnits,
133+
showMealMacros: showMealMacros,
131134
);
132135
}
133136
return const SizedBox();

lib/features/diary/presentation/bloc/diary_bloc.dart

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ class DiaryBloc extends Bloc<DiaryEvent, DiaryState> {
2222
on<LoadDiaryYearEvent>((event, emit) async {
2323
emit(DiaryLoadingState());
2424

25-
final usesImperialUnits =
26-
(await _getConfigUsecase.getConfig()).usesImperialUnits;
25+
final config = await _getConfigUsecase.getConfig();
26+
final usesImperialUnits = config.usesImperialUnits;
27+
final showMealMacros = config.showMealMacros;
2728

2829
currentDay = DateTime.now();
2930
// #292: Extended to match calendar range (5 years back)
@@ -39,7 +40,11 @@ class DiaryBloc extends Bloc<DiaryEvent, DiaryState> {
3940
trackedDay.day.toParsedDay(): trackedDay,
4041
};
4142

42-
emit(DiaryLoadedState(trackedDaysMap, usesImperialUnits));
43+
emit(DiaryLoadedState(
44+
trackedDaysMap,
45+
usesImperialUnits,
46+
showMealMacros: showMealMacros,
47+
));
4348
});
4449
}
4550

lib/features/diary/presentation/bloc/diary_state.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,14 @@ class DiaryLoadingState extends DiaryState {
1717
class DiaryLoadedState extends DiaryState {
1818
final Map<String, TrackedDayEntity> trackedDayMap;
1919
final bool usesImperialUnits;
20+
final bool showMealMacros;
2021

21-
const DiaryLoadedState(this.trackedDayMap, this.usesImperialUnits);
22+
const DiaryLoadedState(
23+
this.trackedDayMap,
24+
this.usesImperialUnits, {
25+
this.showMealMacros = true,
26+
});
2227

2328
@override
24-
List<Object?> get props => [trackedDayMap, usesImperialUnits];
29+
List<Object?> get props => [trackedDayMap, usesImperialUnits, showMealMacros];
2530
}

lib/features/diary/presentation/widgets/day_info_widget.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class DayInfoWidget extends StatelessWidget {
2222
final List<IntakeEntity> snackIntake;
2323

2424
final bool usesImperialUnits;
25+
final bool showMealMacros;
2526
final Function(IntakeEntity intake, TrackedDayEntity? trackedDayEntity)
2627
onDeleteIntake;
2728
final Function(
@@ -52,6 +53,7 @@ class DayInfoWidget extends StatelessWidget {
5253
required this.dinnerIntake,
5354
required this.snackIntake,
5455
required this.usesImperialUnits,
56+
this.showMealMacros = true,
5557
required this.onDeleteIntake,
5658
required this.onDeleteActivity,
5759
required this.onCopyIntake,
@@ -165,6 +167,7 @@ class DayInfoWidget extends StatelessWidget {
165167
? null
166168
: onCopyIntake,
167169
usesImperialUnits: usesImperialUnits,
170+
showMealMacros: showMealMacros,
168171
trackedDayEntity: trackedDay,
169172
),
170173
IntakeVerticalList(
@@ -177,6 +180,7 @@ class DayInfoWidget extends StatelessWidget {
177180
onItemLongPressedCallback: onIntakeItemLongPressed,
178181
onItemTappedCallback: onEditIntake,
179182
usesImperialUnits: usesImperialUnits,
183+
showMealMacros: showMealMacros,
180184
onCopyIntakeCallback:
181185
DateUtils.isSameDay(selectedDay, DateTime.now())
182186
? null
@@ -197,6 +201,7 @@ class DayInfoWidget extends StatelessWidget {
197201
? null
198202
: onCopyIntake,
199203
usesImperialUnits: usesImperialUnits,
204+
showMealMacros: showMealMacros,
200205
),
201206
IntakeVerticalList(
202207
day: selectedDay,
@@ -208,6 +213,7 @@ class DayInfoWidget extends StatelessWidget {
208213
onItemLongPressedCallback: onIntakeItemLongPressed,
209214
onItemTappedCallback: onEditIntake,
210215
usesImperialUnits: usesImperialUnits,
216+
showMealMacros: showMealMacros,
211217
onCopyIntakeCallback:
212218
DateUtils.isSameDay(selectedDay, DateTime.now())
213219
? null

0 commit comments

Comments
 (0)