mirror of
https://github.com/wger-project/flutter.git
synced 2026-02-18 00:17:48 +01:00
prevent duplicate ingredients in cache
This commit is contained in:
@@ -306,19 +306,31 @@ class NutritionPlansProvider with ChangeNotifier {
|
|||||||
Future<void> cacheIngredient(Ingredient ingredient, {IngredientDatabase? database}) async {
|
Future<void> cacheIngredient(Ingredient ingredient, {IngredientDatabase? database}) async {
|
||||||
database ??= this.database;
|
database ??= this.database;
|
||||||
|
|
||||||
ingredients.add(ingredient);
|
if (!ingredients.any((e) => e.id == ingredient.id)) {
|
||||||
|
ingredients.add(ingredient);
|
||||||
|
}
|
||||||
|
|
||||||
final data = ingredient.toJson();
|
final ingredientDb = await (database.select(
|
||||||
await database
|
database.ingredients,
|
||||||
.into(database.ingredients)
|
)..where((e) => e.id.equals(ingredient.id))).getSingleOrNull();
|
||||||
.insert(
|
|
||||||
IngredientsCompanion.insert(
|
if (ingredientDb == null) {
|
||||||
id: ingredient.id,
|
final data = ingredient.toJson();
|
||||||
data: jsonEncode(data),
|
try {
|
||||||
lastFetched: DateTime.now(),
|
await database
|
||||||
),
|
.into(database.ingredients)
|
||||||
);
|
.insert(
|
||||||
_logger.finer("Saved ingredient '${ingredient.name}' to db cache");
|
IngredientsCompanion.insert(
|
||||||
|
id: ingredient.id,
|
||||||
|
data: jsonEncode(data),
|
||||||
|
lastFetched: DateTime.now(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
_logger.finer("Saved ingredient '${ingredient.name}' to db cache");
|
||||||
|
} catch (e) {
|
||||||
|
_logger.finer("Error caching ingredient '${ingredient.name}': $e");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Fetch and return an ingredient
|
/// Fetch and return an ingredient
|
||||||
|
|||||||
Reference in New Issue
Block a user