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 {
|
||||
database ??= this.database;
|
||||
|
||||
ingredients.add(ingredient);
|
||||
if (!ingredients.any((e) => e.id == ingredient.id)) {
|
||||
ingredients.add(ingredient);
|
||||
}
|
||||
|
||||
final data = ingredient.toJson();
|
||||
await database
|
||||
.into(database.ingredients)
|
||||
.insert(
|
||||
IngredientsCompanion.insert(
|
||||
id: ingredient.id,
|
||||
data: jsonEncode(data),
|
||||
lastFetched: DateTime.now(),
|
||||
),
|
||||
);
|
||||
_logger.finer("Saved ingredient '${ingredient.name}' to db cache");
|
||||
final ingredientDb = await (database.select(
|
||||
database.ingredients,
|
||||
)..where((e) => e.id.equals(ingredient.id))).getSingleOrNull();
|
||||
|
||||
if (ingredientDb == null) {
|
||||
final data = ingredient.toJson();
|
||||
try {
|
||||
await database
|
||||
.into(database.ingredients)
|
||||
.insert(
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user