Skip to content

Commit f220ea5

Browse files
authored
Merge pull request #214 from wger-project/feature/ingredient-images
Add ingredient images
2 parents e7a9c0f + 65dd284 commit f220ea5

26 files changed

+1213
-801
lines changed

integration_test/5_nutritional_plan.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import 'package:wger/providers/nutrition.dart';
1111
import 'package:wger/screens/nutritional_plan_screen.dart';
1212
import 'package:wger/theme/theme.dart';
1313

14-
import '../test/other/base_provider_test.mocks.dart';
15-
import '../test/utils.dart';
14+
import '../test/user/provider_test.mocks.dart';
1615

1716
Widget createNutritionalPlanScreen({locale = 'en'}) {
17+
var mockBaseProvider = MockWgerBaseProvider();
18+
1819
final key = GlobalKey<NavigatorState>();
19-
final client = MockClient();
2020

2121
final muesli = Ingredient(
2222
id: 1,
@@ -96,7 +96,7 @@ Widget createNutritionalPlanScreen({locale = 'en'}) {
9696
return MultiProvider(
9797
providers: [
9898
ChangeNotifierProvider<NutritionPlansProvider>(
99-
create: (context) => NutritionPlansProvider(testAuthProvider, [], client),
99+
create: (context) => NutritionPlansProvider(mockBaseProvider, []),
100100
),
101101
ChangeNotifierProvider<BodyWeightProvider>(
102102
create: (context) => BodyWeightProvider(mockBaseProvider),

lib/main.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,12 @@ class MyApp extends StatelessWidget {
8484
previous ?? WorkoutPlansProvider(WgerBaseProvider(auth), exercises, []),
8585
),
8686
ChangeNotifierProxyProvider<AuthProvider, NutritionPlansProvider>(
87-
create: (context) =>
88-
NutritionPlansProvider(Provider.of<AuthProvider>(context, listen: false), []),
89-
update: (context, auth, previous) => previous ?? NutritionPlansProvider(auth, []),
87+
create: (context) => NutritionPlansProvider(
88+
WgerBaseProvider(Provider.of<AuthProvider>(context, listen: false)),
89+
[],
90+
),
91+
update: (context, auth, previous) =>
92+
previous ?? NutritionPlansProvider(WgerBaseProvider(auth), []),
9093
),
9194
ChangeNotifierProxyProvider<AuthProvider, MeasurementProvider>(
9295
create: (context) => MeasurementProvider(

lib/models/nutrition/image.dart

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* This file is part of wger Workout Manager <https://github.com/wger-project>.
3+
* Copyright (C) 2020, 2021 wger Team
4+
*
5+
* wger Workout Manager is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Affero General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Affero General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Affero General Public License
16+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17+
*/
18+
import 'package:json_annotation/json_annotation.dart';
19+
20+
part 'image.g.dart';
21+
22+
@JsonSerializable()
23+
class IngredientImage {
24+
@JsonKey(required: true)
25+
final int id;
26+
27+
/// Barcode of the product
28+
@JsonKey(required: true)
29+
final String uuid;
30+
31+
/// Name of the product
32+
@JsonKey(required: true, name: 'ingredient_id')
33+
final String ingredientId;
34+
35+
@JsonKey(required: true)
36+
final String image;
37+
38+
/// Size in bytes
39+
@JsonKey(required: true)
40+
final int size;
41+
42+
const IngredientImage(
43+
{required this.id,
44+
required this.uuid,
45+
required this.ingredientId,
46+
required this.image,
47+
required this.size});
48+
49+
// Boilerplate
50+
factory IngredientImage.fromJson(Map<String, dynamic> json) => _$IngredientImageFromJson(json);
51+
Map<String, dynamic> toJson() => _$IngredientImageToJson(this);
52+
}

lib/models/nutrition/image.g.dart

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

lib/models/nutrition/ingredient.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818
import 'package:json_annotation/json_annotation.dart';
1919
import 'package:wger/helpers/json.dart';
20+
import 'package:wger/models/nutrition/image.dart';
2021

2122
part 'ingredient.g.dart';
2223

@@ -68,7 +69,9 @@ class Ingredient {
6869
@JsonKey(required: true, fromJson: stringToNum, toJson: numToString)
6970
final num sodium;
7071

71-
const Ingredient({
72+
IngredientImage? image;
73+
74+
Ingredient({
7275
required this.id,
7376
required this.code,
7477
required this.name,
@@ -81,6 +84,7 @@ class Ingredient {
8184
required this.fatSaturated,
8285
required this.fibres,
8386
required this.sodium,
87+
this.image,
8488
});
8589

8690
// Boilerplate

lib/models/nutrition/ingredient.g.dart

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

lib/providers/measurement.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ class MeasurementProvider with ChangeNotifier {
3232
List<MeasurementCategory> _categories = [];
3333

3434
MeasurementProvider(this.baseProvider);
35-
//: super(auth, client);
3635

3736
List<MeasurementCategory> get categories => _categories;
3837

0 commit comments

Comments
 (0)