feat: add rematch functionality for recipe ingredients and enhance inventory management
Test Suite / test (24.15.0) (push) Has been cancelled
Test Suite / test (24.15.0) (push) Has been cancelled
- Added a new API path for rematching recipe ingredients in `api_paths.dart`. - Implemented a manual product creation dialog in `inventory_screen.dart` to allow users to create new products directly. - Integrated the rematch functionality in `recipe_repository.dart` to handle rematching of recipe ingredients. - Updated the recipe detail screen to include a button for triggering the rematch process. - Introduced a new `RecipeMatchingService` in the backend to handle ingredient matching logic. - Added database migration to include `aiEngineEnabled` column in the User table. Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -521,6 +521,29 @@ class _InventoryPreviewSectionState
|
||||
extends ConsumerState<_InventoryPreviewSection> {
|
||||
bool _loaded = false;
|
||||
|
||||
Future<void> _runRematch() async {
|
||||
try {
|
||||
final token = ref.read(authStateProvider).maybeWhen(
|
||||
data: (t) => t,
|
||||
orElse: () => null,
|
||||
) ??
|
||||
await ref.read(authStateProvider.future);
|
||||
await ref
|
||||
.read(recipeRepositoryProvider)
|
||||
.rematchRecipeIngredients(widget.recipeId, token: token);
|
||||
ref.invalidate(recipeAnalysisProvider(widget.recipeId));
|
||||
if (!mounted) return;
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Matchning uppdaterad')),
|
||||
);
|
||||
} catch (e) {
|
||||
if (!mounted) return;
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
buildCopyableErrorSnackBar(context, mapErrorToUserMessage(e, context)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
@@ -538,6 +561,12 @@ class _InventoryPreviewSectionState
|
||||
icon: const Icon(Icons.search, size: 16),
|
||||
label: const Text('Kontrollera inventarie'),
|
||||
),
|
||||
if (_loaded)
|
||||
IconButton(
|
||||
tooltip: 'Kör om matchning',
|
||||
icon: const Icon(Icons.auto_fix_high),
|
||||
onPressed: _runRematch,
|
||||
),
|
||||
if (_loaded)
|
||||
IconButton(
|
||||
tooltip: 'Uppdatera',
|
||||
|
||||
Reference in New Issue
Block a user